AbstractКонструктор для адаптера базы данных
Optionaloptions: IAppDBДополнительные опции для настройки БД. Тут можно передать настройки для подключения к базе, либо дополнительную информацию, необходимую для работы.
Protected_Protected Optional_Дополнительные опции для работы базы данных
Формат базы данных
Abstract_Выполняет INSERT-запрос.
Этот метод вызывается внутренней логикой фреймворка для добавления данных. Вы обязаны вернуть:
true — если запись успешно добавлена,false — при любой ошибке (подключение, валидация и т.п.).⚠️ Не выбрасывайте исключения — обрабатывайте ошибки внутри и возвращайте false.
Метод может быть синхронным или асинхронным.
Дополнительная информация для запроса. Содержит сам запроса, а также название таблицы и прочие данные.
Выполняет произвольный запрос через callback.
Если вы планируете использовать query(), обязательно переопределите _query. По умолчанию он возвращает null и не выполняет никаких действий.
функция обработчик
Abstract_Выполняет DELETE-запрос.
Этот метод вызывается внутренней логикой фреймворка для удаления данных. Вы обязаны вернуть:
true — если запись успешно добавлена,false — при любой ошибке (подключение, валидация и т.п.).⚠️ Не выбрасывайте исключения — обрабатывайте ошибки внутри и возвращайте false.
Метод может быть синхронным или асинхронным.
Дополнительная информация для запроса. Содержит сам запроса, а также название таблицы и прочие данные.
Abstract_Выполняет 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 найденную запись, либо отдать все доступные данные.
Abstract_Выполняет UPDATE-запрос.
Этот метод вызывается внутренней логикой фреймворка для обновления данных. Вы обязаны вернуть:
true — если запись успешно добавлена,false — при любой ошибке (подключение, валидация и т.п.).⚠️ Не выбрасывайте исключения — обрабатывайте ошибки внутри и возвращайте false.
Метод может быть синхронным или асинхронным.
Дополнительная информация для запроса. Содержит сам запроса, а также название таблицы и прочие данные.
Вызывается при удалении модели или завершении сессии. Может использоваться для освобождения ресурсов, связанных с таблицей.
Название таблицы, подключение к которой закрывается
Устанавливает подключение к базе данных. В случае успешного подключения возвращается true
Вызывается при завершении работы приложения или замене адаптера. Используйте для закрытия соединений, сохранения данных и т.п.
Экранирует строку для безопасного использования в запросах.
⚠️ По умолчанию просто приводит значение к строке. Если ваша БД требует экранирования (например, SQL), обязательно переопределите этот метод.
Экранируемый запрос
Удобный метод для извлечения данных из результата запроса.
Проверяет res.status и возвращает res.data только при успехе.
Используется в моделях и контроллерах для безопасного доступа к данным.
Метод инициализации адаптера.
Вызывается один раз при подключении через bot.use().
В данном методе можно произвести дополнительную настройку для подключения к базе
Контекст приложения
Выполняет INSERT-запрос.
Внутри себя вызывает this._insert, основное отличие в том, что в данном методе пишутся метрики.
Дополнительная информация для запроса. Содержит сам запроса, а также название таблицы и прочие данные.
AbstractisПроверяет, установлено ли соединение с БД.
Выполняет произвольный запрос через callback.
Внутри себя вызывает this._query, основное отличие в том, что в данном методе пишутся метрики.
функция обработчик
Выполняет DELETE-запрос.
Внутри себя вызывает this._remove, основное отличие в том, что в данном методе пишутся метрики.
Дополнительная информация для запроса. Содержит сам запроса, а также название таблицы и прочие данные.
Сохраняет запись: вставляет новую или обновляет существующую. Логика:
isNew === true → вызывается insertselectOne по saveData.query,
и если запись найдена — вызывается update, иначе — insertДанные для запроса. Включает как запроса, так и сами данные
Флаг, говорящий о том, что точно происходит добавление новой записи
Выполняет SELECT-запрос.
Внутри себя вызывает this._select, основное отличие в том, что в данном методе пишутся метрики.
Дополнительная информация для запроса. Содержит информацию о таблице и структуре.
Сам запрос
Определяет нужно ли вернуть только 1 найденную запись, либо отдать все доступные данные.
Выполняет SELECT с ограничением до одной записи.
Дополнительные данные для запроса
Сам запроса
Выполняет UPDATE-запрос.
Внутри себя вызывает this._update, основное отличие в том, что в данном методе пишутся метрики.
Дополнительная информация для запроса. Содержит сам запроса, а также название таблицы и прочие данные.
Базовый класс для создания адаптеров баз данных. При наследовании вы ОБЯЗАНЫ реализовать следующие методы:
Эти методы вызываются внутренней логикой фреймворка и определяют, как именно выполняются операции с вашей БД.
Рекомендуется наследоваться от этого класса при создании собственного адаптера, так как он уже реализует общую логику: интеграцию с контекстом приложения, сбор метрик, управление соединениями.
Если по техническим причинам наследование невозможно — ваш класс должен в точности реализовывать интерфейс
IDatabaseAdapter⚠️ Важно: в приложении может быть активен только один адаптер БД.