umbot
    Preparing search index...

    Class BaseDbAdapter<TDbInfo>Abstract

    Базовый класс для создания адаптеров баз данных. При наследовании вы ОБЯЗАНЫ реализовать следующие методы:

    • _select - Получение данных
    • _insert - Добавление данных
    • _update - Обновление данных
    • _remove - Удаление данных
    • isConnected - Проверка не то, есть ли подключение к базе или нет

    Эти методы вызываются внутренней логикой фреймворка и определяют, как именно выполняются операции с вашей БД.

    Рекомендуется наследоваться от этого класса при создании собственного адаптера, так как он уже реализует общую логику: интеграцию с контекстом приложения, сбор метрик, управление соединениями.

    Если по техническим причинам наследование невозможно — ваш класс должен в точности реализовывать интерфейс IDatabaseAdapter

    ⚠️ Важно: в приложении может быть активен только один адаптер БД.

    Type Parameters

    Hierarchy (View Summary)

    Implements

    Index

    Constructors

    Properties

    _appContext: AppContext<TDbInfo>
    _dbOptions?: IAppDB

    Дополнительные опции для работы базы данных

    dbFormat: string

    Формат базы данных

    Methods

    • Выполняет INSERT-запрос.

      Этот метод вызывается внутренней логикой фреймворка для добавления данных. Вы обязаны вернуть:

      • true — если запись успешно добавлена,
      • false — при любой ошибке (подключение, валидация и т.п.).

      ⚠️ Не выбрасывайте исключения — обрабатывайте ошибки внутри и возвращайте false. Метод может быть синхронным или асинхронным.

      Parameters

      • insertData: IQuery

        Дополнительная информация для запроса. Содержит сам запроса, а также название таблицы и прочие данные.

      Returns boolean | Promise<boolean>

    • Выполняет произвольный запрос через callback. Если вы планируете использовать query(), обязательно переопределите _query. По умолчанию он возвращает null и не выполняет никаких действий.

      Parameters

      • _callback: TQueryCb

        функция обработчик

      Returns unknown

    • Выполняет DELETE-запрос.

      Этот метод вызывается внутренней логикой фреймворка для удаления данных. Вы обязаны вернуть:

      • true — если запись успешно добавлена,
      • false — при любой ошибке (подключение, валидация и т.п.).

      ⚠️ Не выбрасывайте исключения — обрабатывайте ошибки внутри и возвращайте false. Метод может быть синхронным или асинхронным.

      Parameters

      • removeData: IQuery

        Дополнительная информация для запроса. Содержит сам запроса, а также название таблицы и прочие данные.

      Returns boolean | Promise<boolean>

    • Выполняет SELECT-запрос.

      Этот метод вызывается внутренней логикой фреймворка для получения данных. Вы обязаны вернуть объект, совместимый с IModelRes<IDbResult>, где:

      • status: true и data — при успешной выборке (даже если найдено 0 записей);
      • status: false и опционально error — при ошибке подключения, синтаксиса и т.п.

      ⚠️ Не выбрасывайте исключения — обрабатывайте ошибки внутри и возвращайте status: false. Метод может быть синхронным или асинхронным.

      Пример возвращаемого значения при успехе:

      { status: true, data: [{ id: 1, name: 'Alice' }] }
      

      Пример при ошибке:

      { status: false, error: 'Connection timeout' }
      

      Parameters

      • selectData: IQuery

        Дополнительная информация для запроса. Содержит информацию о таблице и структуре.

      • where: IQueryData | null

        Сам запрос

      • isOne: boolean

        Определяет нужно ли вернуть только 1 найденную запись, либо отдать все доступные данные.

      Returns IModelRes<IDataValue> | Promise<IModelRes<IDataValue>>

    • Выполняет UPDATE-запрос.

      Этот метод вызывается внутренней логикой фреймворка для обновления данных. Вы обязаны вернуть:

      • true — если запись успешно добавлена,
      • false — при любой ошибке (подключение, валидация и т.п.).

      ⚠️ Не выбрасывайте исключения — обрабатывайте ошибки внутри и возвращайте false. Метод может быть синхронным или асинхронным.

      Parameters

      • updateData: IQuery

        Дополнительная информация для запроса. Содержит сам запроса, а также название таблицы и прочие данные.

      Returns boolean | Promise<boolean>

    • Вызывается при удалении модели или завершении сессии. Может использоваться для освобождения ресурсов, связанных с таблицей.

      Parameters

      • _tableName: string

        Название таблицы, подключение к которой закрывается

      Returns void

    • Устанавливает подключение к базе данных. В случае успешного подключения возвращается true

      Returns boolean | Promise<boolean>

    • Вызывается при завершении работы приложения или замене адаптера. Используйте для закрытия соединений, сохранения данных и т.п.

      Returns void

    • Экранирует строку для безопасного использования в запросах.

      ⚠️ По умолчанию просто приводит значение к строке. Если ваша БД требует экранирования (например, SQL), обязательно переопределите этот метод.

      Parameters

      • str: string | number

        Экранируемый запрос

      Returns string

    • Удобный метод для извлечения данных из результата запроса. Проверяет res.status и возвращает res.data только при успехе.

      Используется в моделях и контроллерах для безопасного доступа к данным.

      Parameters

      • res: IModelRes<IDbResult<unknown>>

        Результат запроса. В случае успешного запроса вернутся данные, в противном случае null

      Returns IDbResult<unknown> | null

    • Метод инициализации адаптера. Вызывается один раз при подключении через bot.use(). В данном методе можно произвести дополнительную настройку для подключения к базе

      Parameters

      • appContext: AppContext<unknown>

        Контекст приложения

      Returns void

    • Выполняет INSERT-запрос.

      Внутри себя вызывает this._insert, основное отличие в том, что в данном методе пишутся метрики.

      Parameters

      • insertData: IQuery

        Дополнительная информация для запроса. Содержит сам запроса, а также название таблицы и прочие данные.

      Returns Promise<boolean>

    • Выполняет произвольный запрос через callback.

      Внутри себя вызывает this._query, основное отличие в том, что в данном методе пишутся метрики.

      Parameters

      • callback: TQueryCb

        функция обработчик

      Returns unknown

    • Выполняет DELETE-запрос.

      Внутри себя вызывает this._remove, основное отличие в том, что в данном методе пишутся метрики.

      Parameters

      • removeData: IQuery

        Дополнительная информация для запроса. Содержит сам запроса, а также название таблицы и прочие данные.

      Returns Promise<boolean>

    • Сохраняет запись: вставляет новую или обновляет существующую. Логика:

      • Если isNew === true → вызывается insert
      • Иначе → сначала делается selectOne по saveData.query, и если запись найдена — вызывается update, иначе — insert

      Parameters

      • saveData: IQuery

        Данные для запроса. Включает как запроса, так и сами данные

      • isNew: boolean

        Флаг, говорящий о том, что точно происходит добавление новой записи

      Returns Promise<boolean>

    • Выполняет SELECT-запрос.

      Внутри себя вызывает this._select, основное отличие в том, что в данном методе пишутся метрики.

      Parameters

      • selectData: IQuery

        Дополнительная информация для запроса. Содержит информацию о таблице и структуре.

      • where: IQueryData | null

        Сам запрос

      • isOne: boolean

        Определяет нужно ли вернуть только 1 найденную запись, либо отдать все доступные данные.

      Returns Promise<IModelRes<IDataValue>>

    • Выполняет UPDATE-запрос.

      Внутри себя вызывает this._update, основное отличие в том, что в данном методе пишутся метрики.

      Parameters

      • updateData: IQuery

        Дополнительная информация для запроса. Содержит сам запроса, а также название таблицы и прочие данные.

      Returns Promise<boolean>