Jump to content

Module:Database reports/sandbox

From Wikipedia, the free encyclopedia
local Report = require('Module:Database report')
local Arguments = require('Module:Arguments')

local p = {}

p.main = function(frame)
	local args = Arguments.getArgs(frame)
	local report = Report:new()
	
	report:setSQL([[
		SELECT page_namespace, page_title FROM page LIMIT 10
	]])
	report:useWikilinks(2, args.ns_number)
	report:setHeadContent('This is the head content')
	report:setSilent(args.silent ~= nil)

	return report:generate()
end 

p.withJs = function() 
	local report = Report:new()
	report:setSQL([[
		SELECT page_namespace, page_title from page WHERE page_random > 0.65 limit 50
	]])
	report:setPostprocessJS([[
		async function postprocess(rows) {
			const result = await bot.api({
				"format": "json",
				"prop": "revisions",
				"titles": "Main Page",
				"formatversion": "2"
			});
			const user = result.query.pages[0].revisions[0].user;
			const restData = await bot.request('/media/api/rest_v1/metrics/pageviews/per-article/en.wikipedia.org/all-access/all-agents/Main%20Page/daily/20240531/20240531');
			log(restData);
			rows.forEach(row => {
				row.title = row.page_title.replace(/_/g, ' ');
				row.user = user;
				row.random = Math.random();
				row.views = restData.items[0].views;
				delete row.page_namespace;
				delete row.page_title;
			});
			return rows;
		}
	]])

	return report:generate()
end

return p