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

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

Материал из wiki.iccup.org
Нет описания правки
Нет описания правки
Строка 9: Строка 9:
function EntityCounter._count(args)
function EntityCounter._count(args)
     local tableName = args.table or "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 res = mw.ext.cargo.query(
 
         tableName,
    -- Проверяем наличие условий и формируем строку запроса
         queryFields,
    if conditions == "" then
        error("Условия не заданы.")
    end
 
    mw.log("Таблица: " .. tableName)
    mw.log("Поля: " .. queryFields)
    mw.log("Условия: " .. conditions)
 
    -- Выполняем запрос через cargo.query
    local res = mw.ext.cargo.query(
         tableName,     -- Имя таблицы
         queryFields,   -- Поля для выборки
         {
         {
             where = conditions,
             where = conditions, -- Условия запроса
             limit = 1,
             limit = 1,           -- Ограничиваем до одной записи
             format = "count"
             format = "count"     -- Формат запроса
         }
         }
     )
     )
    mw.log("Результат запроса: ", res)


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


return EntityCounter
return EntityCounter

Версия от 22:36, 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 ""  -- Условия запроса

    -- Проверяем наличие условий и формируем строку запроса
    if conditions == "" then
        error("Условия не заданы.")
    end

    mw.log("Таблица: " .. tableName)
    mw.log("Поля: " .. queryFields)
    mw.log("Условия: " .. conditions)

    -- Выполняем запрос через cargo.query
    local res = mw.ext.cargo.query(
        tableName,      -- Имя таблицы
        queryFields,    -- Поля для выборки
        {
            where = conditions,  -- Условия запроса
            limit = 1,           -- Ограничиваем до одной записи
            format = "count"     -- Формат запроса
        }
    )

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

return EntityCounter