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

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

Материал из wiki.iccup.org
Нет описания правки
Нет описания правки
Строка 11: Строка 11:
     local queryFields = args.fields or "*"    -- Укажите, какие поля нужно запросить, по умолчанию - все поля
     local queryFields = args.fields or "*"    -- Укажите, какие поля нужно запросить, по умолчанию - все поля
     local conditions = args.conditions or ""  -- Условия запроса
     local conditions = args.conditions or ""  -- Условия запроса
    -- Проверяем наличие условий и формируем строку запроса
    if conditions == "" then
        error("Условия не заданы.")
    end


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


     -- Отладка: проверяем, что возвращает запрос
     -- Проверяем результат
     mw.logObject(res)  -- выводим таблицу для отладки
     mw.logObject(res)  -- выводим структуру результата


    -- Если результат — таблица, проверяем ее содержимое
     if type(res) == 'table' then
     if type(res) == 'table' then
        for k, v in pairs(res) do
         -- Если таблица возвращена, пробуем вывести данные
            mw.log(k, v)  -- выводим ключи и значения из таблицы
        end
 
         -- Попробуем вернуть первый элемент, если он существует
         if res[1] then
         if res[1] then
             return res[1]
             return res[1]
Строка 48: Строка 38:
         end
         end
     else
     else
         -- Если результат не таблица, просто возвращаем результат
         return "Ошибка: результат не является таблицей."
        return res
     end
     end
end
end


return EntityCounter
return EntityCounter

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

    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"     -- Формат запроса
        }
    )

    -- Проверяем результат
    mw.logObject(res)  -- выводим структуру результата

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

return EntityCounter