AbstractКонструктор для адаптера базы данных
Optionaloptions: IAppDBДополнительные опции для настройки БД. Тут можно передать настройки для подключения к базе, либо дополнительную информацию, необходимую для работы.
Protected_appContextКонтекст приложения
Protected Optional_dbOptionsДополнительные опции для работы базы данных
Формат базы данных
Abstract_insertВыполняет INSERT-запрос.
Этот метод вызывается внутренней логикой фреймворка для добавления данных. Вы обязаны вернуть:
true — если запись успешно добавлена,false — при любой ошибке (подключение, валидация и т.п.).⚠️ Не выбрасывайте исключения — обрабатывайте ошибки внутри и возвращайте false.
Метод может быть синхронным или асинхронным.
Дополнительная информация для запроса. Содержит сам запрос, а также название таблицы и прочие данные.
boolean | Promise
Выполняет произвольный запрос через callback.
Если вы планируете использовать query(), обязательно переопределите _query. По умолчанию он возвращает null и не выполняет никаких действий.
функция обработчик
Abstract_removeВыполняет DELETE-запрос.
Этот метод вызывается внутренней логикой фреймворка для удаления данных. Вы обязаны вернуть:
true — если операция выполнена без ошибок (включая случай, когда под условие не попало записей),false — при любой ошибке (подключение, валидация и т.п.).⚠️ Не выбрасывайте исключения — обрабатывайте ошибки внутри и возвращайте false.
Метод может быть синхронным или асинхронным.
Дополнительная информация для запроса. Содержит сам запрос, а также название таблицы и прочие данные.
boolean | Promise
Abstract_selectВыполняет SELECT-запрос.
Этот метод вызывается внутренней логикой фреймворка для получения данных.
Вы обязаны вернуть объект, совместимый с IModelRes<IDbResult>, где:
status: true и data — при успешной выборке (даже если найдено 0 записей);status: false и опционально error — при ошибке подключения, синтаксиса и т.п.⚠️ Не выбрасывайте исключения — обрабатывайте ошибки внутри и возвращайте status: false.
Метод может быть синхронным или асинхронным.
Пример возвращаемого значения при успехе:
{ status: true, data: [{ id: 1, name: 'Alice' }] }
Пример при ошибке:
{ status: false, error: 'Connection timeout' }
Дополнительная информация для запроса. Содержит информацию о таблице и структуре.
Сам запрос
Определяет нужно ли вернуть только 1 найденную запись, либо отдать все доступные данные.
IModelRes | Promise
Abstract_updateВыполняет UPDATE-запрос.
Этот метод вызывается внутренней логикой фреймворка для обновления данных. Вы обязаны вернуть:
true — если операция выполнена без ошибок (включая случай, когда под условие не попало записей),false — при любой ошибке (подключение, валидация и т.п.).⚠️ Не выбрасывайте исключения — обрабатывайте ошибки внутри и возвращайте false.
Метод может быть синхронным или асинхронным.
Дополнительная информация для запроса. Содержит сам запрос, а также название таблицы и прочие данные.
boolean | Promise
Вызывается из destroy() при завершении работы приложения или замене адаптера (FileAdapter закрывает им каждую таблицу). Может использоваться для освобождения ресурсов, связанных с таблицей.
Название таблицы, подключение к которой закрывается
Устанавливает подключение к базе данных. В случае успешного подключения возвращается true
Вызывается при завершении работы приложения или замене адаптера. Используйте для закрытия соединений, сохранения данных и т.п.
Экранирует строку для безопасного использования в запросах.
⚠️ По умолчанию просто приводит значение к строке. Если ваша БД требует экранирования (например, SQL), обязательно переопределите этот метод.
Экранируемая строка
Экранированная строка
Удобный метод для извлечения данных из результата запроса.
Проверяет res.status и возвращает res.data только при успехе.
Используется в моделях и контроллерах для безопасного доступа к данным.
Данные из res.data при status = true, иначе null
Метод инициализации адаптера.
Вызывается один раз при подключении через bot.use().
В данном методе можно произвести дополнительную настройку для подключения к базе
Контекст приложения
Выполняет INSERT-запрос.
Внутри себя вызывает this._insert, основное отличие в том, что в данном методе пишутся метрики.
Дополнительная информация для запроса. Содержит сам запрос, а также название таблицы и прочие данные.
true при успешной вставке, иначе false
AbstractisConnectedПроверяет, установлено ли соединение с БД.
Выполняет произвольный запрос через callback.
Внутри себя вызывает this._query. Метрики времени выполнения не записываются (в отличие от select/insert/update/remove).
функция обработчик
Выполняет DELETE-запрос.
Внутри себя вызывает this._remove, основное отличие в том, что в данном методе пишутся метрики.
Дополнительная информация для запроса. Содержит сам запрос, а также название таблицы и прочие данные.
true при успешном удалении, иначе false
Сохраняет запись: вставляет новую или обновляет существующую. Логика:
isNew === true → перед insert ключи условия мержатся в данные
(saveData.data = {...data, ...query}) и вызывается insertselectOne по saveData.query,
и если запись найдена — вызывается update, иначе — insert
(тоже с мерджем ключей условия в данные)Данные для запроса. Включает как запрос, так и сами данные
Флаг, говорящий о том, что точно происходит добавление новой записи
true при успешном сохранении, иначе false
Выполняет SELECT-запрос.
Внутри себя вызывает this._select, основное отличие в том, что в данном методе пишутся метрики.
Дополнительная информация для запроса. Содержит информацию о таблице и структуре.
Сам запрос
Определяет нужно ли вернуть только 1 найденную запись, либо отдать все доступные данные.
Результат SELECT-запроса (IModelRes)
Выполняет SELECT с ограничением до одной записи.
Дополнительные данные для запроса
Сам запрос (условие выборки). При null или undefined вернётся null
IModelRes с результатом выборки (одна запись — в data), либо null, если условие не передано. При отсутствии записей возвращается { status: false }.
Выполняет UPDATE-запрос.
Внутри себя вызывает this._update, основное отличие в том, что в данном методе пишутся метрики.
Дополнительная информация для запроса. Содержит сам запрос, а также название таблицы и прочие данные.
true при успешном обновлении, иначе false
Базовый класс для создания адаптеров баз данных. При наследовании вы ОБЯЗАНЫ реализовать следующие методы:
Эти методы вызываются внутренней логикой фреймворка и определяют, как именно выполняются операции с вашей БД.
Рекомендуется наследоваться от этого класса при создании собственного адаптера, так как он уже реализует общую логику: интеграцию с контекстом приложения, сбор метрик, управление соединениями.
Если по техническим причинам наследование невозможно — ваш класс должен в точности реализовывать интерфейс
IDatabaseAdapterВажно: в приложении может быть активен только один адаптер БД.