Skip to main content

Объект соединения

conn:query

Выполняет запрос и отдаёт строки в коллбэк.

Аргументы

Есть два способа передать значения для ?.Старый вариант передаёт их отдельными аргументами:
Для динамического количества параметров можно передать их одной таблицей:
Оба варианта поддерживаются.

Возвращает

Пример

Отдельные параметры
Таблица параметров
Форма с таблицей особенно удобна для запросов, которые собираются динамически:
Соединения переживают lua_reload и выгрузку плагина: сокет закрывается только при остановке сервера, а не при перезагрузке — обрывать чужой запрос на середине нельзя, см. ниже.

conn:exec

conn:exec полностью эквивалентен conn:query. Отличается только названием: query обычно используется для SELECT, а exec — для INSERT, UPDATE и DELETE.

Аргументы

Возвращает

Пример

conn:find

SELECT по одной таблице. Собирает запрос сам; значения в where идут через ?.

Аргументы

opts

Возвращает

Пример


conn:create

INSERT одной строки. Ключи таблицы — имена колонок, значения — через ?.

Аргументы

Возвращает

Пример


conn:update

UPDATE: обязательны и set, и where (оба непустые).

Аргументы

opts

Возвращает

Пример


conn:delete

DELETE. where обязателен и непустой (защита от «удалить всё»).

Аргументы

opts

Возвращает

Пример


conn:migrate

Прогоняет миграции последовательно на этом соединении (под одним use_lock). Уже применённые id пропускаются. Книга учёта —
создаётся сама при первом вызове.

Аргументы

opts

migrations — массив шагов: Нужен sql или file. files — массив имён файлов; id миграции = имя файла целиком (001_init.sql). Можно передать оба списка: сначала migrations, потом files.

Возвращает

Ответ

Как у query, плюс:

Пример

Файлы читаются только из каталога плагина (песочница file.*): без ../, без подпапок. SQL из файла выполняется как есть — это код плагина.
Повторный вызов с тем же id ничего не делает. Новый шаг — новый id. Весь batch одной миграции идёт строго по очереди; параллелить шаги нельзя.

conn:close

Закрывает соединение.

Возвращает

Ничего. Помечает соединение закрытым сразу; сам сокет освобождается позже, когда рабочий поток до него дойдёт (или при остановке сервера, если запросов на нём больше нет). Запросы, уже отправленные до :close(), доигрывают и получают res.error.