Дополнительные действия
DarkMuse (обсуждение | вклад) Новая страница: «local Arguments = require('Module:Arguments') local EntityCounter = {} function EntityCounter.count(frame) return EntityCounter._count(Arguments.getArgs(frame)) end function EntityCounter._count(args) local smwQuery = args.query local conditions = args.conditions local queryString = "" .. smwQuery .. "" if conditions then queryString = queryString .. conditions end local res = mw.smw.ask { queryString, "format=count" } if type(res) =...» |
DarkMuse (обсуждение | вклад) Нет описания правки |
||
| (не показано 38 промежуточных версий этого же участника) | |||
| Строка 4: | Строка 4: | ||
function EntityCounter.count(frame) | function EntityCounter.count(frame) | ||
return EntityCounter._count(Arguments.getArgs(frame)) | |||
end | end | ||
function EntityCounter._count(args) | function EntityCounter._count(args) | ||
local tableName = args.table or "Heroes" -- Таблица Cargo | |||
local queryFields = args.fields or "*" -- Поля, которые нужно запросить | |||
local conditions = args.conditions or "" -- Условия запроса | |||
-- Если в условиях есть строки, нужно обернуть их в одинарные кавычки | |||
-- Проверим наличие строки "type='hero'" | |||
mw.log("Таблица: " .. tableName) | |||
mw.log("Поля: " .. queryFields) | |||
mw.log("Условия: " .. conditions) | |||
-- Выполняем запрос через cargo.query | |||
local res = mw.ext.cargo.query( | |||
tableName, -- Имя таблицы | |||
queryFields, -- Поля для выборки | |||
{ | |||
where = conditions, -- Условия запроса | |||
format = "table", -- Возвращаем результат в виде таблицы | |||
limit = 1000 -- Лимит строк | |||
} | |||
) | |||
-- Проверяем результат | |||
mw.logObject(res) -- выводим структуру результата для отладки | |||
if type(res) == 'table' then | |||
if #res > 0 then | |||
-- Если результат непустой, выводим количество строк | |||
return tostring(#res) | |||
else | |||
return 0 | |||
end | |||
else | |||
return "Ошибка: результат не является таблицей." | |||
end | |||
end | end | ||
return EntityCounter | return EntityCounter | ||
Текущая версия от 19:41, 12 октября 2024
Для документации этого модуля может быть создана страница Модуль:ICCup entity count/doc
local Arguments = require('Module:Arguments')
local EntityCounter = {}
function EntityCounter.count(frame)
return EntityCounter._count(Arguments.getArgs(frame))
end
function EntityCounter._count(args)
local tableName = args.table or "Heroes" -- Таблица Cargo
local queryFields = args.fields or "*" -- Поля, которые нужно запросить
local conditions = args.conditions or "" -- Условия запроса
-- Если в условиях есть строки, нужно обернуть их в одинарные кавычки
-- Проверим наличие строки "type='hero'"
mw.log("Таблица: " .. tableName)
mw.log("Поля: " .. queryFields)
mw.log("Условия: " .. conditions)
-- Выполняем запрос через cargo.query
local res = mw.ext.cargo.query(
tableName, -- Имя таблицы
queryFields, -- Поля для выборки
{
where = conditions, -- Условия запроса
format = "table", -- Возвращаем результат в виде таблицы
limit = 1000 -- Лимит строк
}
)
-- Проверяем результат
mw.logObject(res) -- выводим структуру результата для отладки
if type(res) == 'table' then
if #res > 0 then
-- Если результат непустой, выводим количество строк
return tostring(#res)
else
return 0
end
else
return "Ошибка: результат не является таблицей."
end
end
return EntityCounter