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

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

Материал из wiki.iccup.org
Нет описания правки
Нет описания правки
 
(не показано 35 промежуточных версий этого же участника)
Строка 4: Строка 4:


function EntityCounter.count(frame)
function EntityCounter.count(frame)
return EntityCounter._count(Arguments.getArgs(frame))
    return EntityCounter._count(Arguments.getArgs(frame))
end
end


function EntityCounter._count(args)
function EntityCounter._count(args)
     local tableName = "Heroes"  -- Таблица Cargo
     local tableName = args.table or "Heroes"  -- Таблица Cargo
     local queryFields = args.fields or "*" -- Укажите, какие поля нужно запросить, по умолчанию - все поля
     local queryFields = args.fields or "*"   -- Поля, которые нужно запросить
     local conditions = args.conditions  -- Условия запроса
     local conditions = args.conditions or "" -- Условия запроса


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


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


     -- Проверяем результат и возвращаем количество записей
    mw.log("Таблица: " .. tableName)
     if type(res) == 'table' and res[1] then
    mw.log("Поля: " .. queryFields)
         return res[1]
    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
     else
         error("Ошибка при выполнении запроса: " .. tostring(res))
         return "Ошибка: результат не является таблицей."
     end
     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