Открыть меню
Открыть персональное меню
Вы не представились системе
Your IP address will be publicly visible if you make any edits.

Модуль:ICCup entity count: различия между версиями

Материал из wiki.iccup.org
Нет описания правки
Нет описания правки
Строка 8: Строка 8:


function EntityCounter._count(args)
function EntityCounter._count(args)
     local smwQuery = args.query
     local tableName = "Heroes"  -- Таблица Cargo
    if not smwQuery then
    local queryFields = args.fields or "*" -- Укажите, какие поля нужно запросить, по умолчанию - все поля
        error("Не указан аргумент 'query'.")
     local conditions = args.conditions  -- Условия запроса
     end


     local conditions = args.conditions
    -- Строим строку условий для запроса
    local queryString = "[[" .. smwQuery .. "]]"
     local query = {
        tables = tableName,
        fields = queryFields,
        where = conditions,
        limit = 1,  -- Ограничиваем до одной записи, т.к. мы хотим подсчитать записи
        format = "count"
    }


     if conditions then
     -- Выполняем запрос через cargo_query
        queryString = queryString .. conditions
     local res = mw.ext.cargo.query(query)
    end
 
     local res = mw.smw.ask {
        queryString,
        "format=count"
    }


    -- Проверяем результат и возвращаем количество записей
     if type(res) == 'table' and res[1] then
     if type(res) == 'table' and res[1] then
         return res[1]
         return res[1]

Версия от 21:50, 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 = "Heroes"  -- Таблица Cargo
    local queryFields = args.fields or "*"  -- Укажите, какие поля нужно запросить, по умолчанию - все поля
    local conditions = args.conditions  -- Условия запроса

    -- Строим строку условий для запроса
    local query = {
        tables = tableName,
        fields = queryFields,
        where = conditions,
        limit = 1,  -- Ограничиваем до одной записи, т.к. мы хотим подсчитать записи
        format = "count"
    }

    -- Выполняем запрос через cargo_query
    local res = mw.ext.cargo.query(query)

    -- Проверяем результат и возвращаем количество записей
    if type(res) == 'table' and res[1] then
        return res[1]
    else
        error("Ошибка при выполнении запроса: " .. tostring(res))
    end
end

return EntityCounter