No edit summary |
No edit summary |
||
| (9 intermediate revisions by the same user not shown) | |||
| Line 29: | Line 29: | ||
local number = require('Module:Random').number | local number = require('Module:Random').number | ||
local queryFields = 'game,link' | local queryFields = 'game=game,link=link' | ||
local randomArgs = { | local randomArgs = { | ||
[1] = 1, | [1] = 1, | ||
| Line 35: | Line 35: | ||
} | } | ||
local countOffset = number(randomArgs) | local countOffset = number(randomArgs) | ||
if countOffset >= 1 then | |||
countOffset = countOffset - 1 | |||
end | |||
local args = { | local args = { | ||
format = 'table', | format = 'table', | ||
limit = 1, | limit = 1, | ||
offset = countOffset | offset = countOffset | ||
} | } | ||
local | |||
local results = cargo.query(tableName, queryFields, args) | |||
for r = 1, #results do | for r = 1, #results do | ||
local result = results[r] | local result = results[r] | ||
return string.format(" | return string.format("[[%s]]", result.link) | ||
end | end | ||
end | end | ||
return p | return p | ||
Latest revision as of 07:51, 27 December 2023
Documentation for this module may be created at Module:RandomCargoRecord/doc
local p = {}
local cargo = mw.ext.cargo
function p.randomCargoRecord(frame)
local getArgs = require('Module:Arguments').getArgs
local args = getArgs(frame);
local tableName = args[1]
if tableName == nil or tableName == "" then
hasErrors = true
return string.format("<code>tableName</code> parameter is required")
end
local countFields = 'COUNT(*)=total'
local countArgs = {
format = 'list',
limit = 1
}
local countResults = cargo.query(tableName, countFields, countArgs)
local total = 0
for r = 1, #countResults do
local result = countResults[r]
total = result.total
end
if total == nil or total == "" then
return string.format("<code>total</code> could not be calculated from table %s", tableName)
end
local number = require('Module:Random').number
local queryFields = 'game=game,link=link'
local randomArgs = {
[1] = 1,
[2] = total
}
local countOffset = number(randomArgs)
if countOffset >= 1 then
countOffset = countOffset - 1
end
local args = {
format = 'table',
limit = 1,
offset = countOffset
}
local results = cargo.query(tableName, queryFields, args)
for r = 1, #results do
local result = results[r]
return string.format("[[%s]]", result.link)
end
end
return p