umbot
    Preparing search index...

    Адаптер для файловой базы данных. Стоит использовать только для быстрого старта, либо для приложений, у которых объем базы не будет превышать несколько сотен мегабайт.

    Hierarchy (View Summary)

    Index

    Constructors

    Properties

    _appContext: AppContext<IFileDbInfo> = ...

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

    _dbOptions?: IAppDB

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

    dbFormat: string = 'file'

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

    Methods

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

      Parameters

      • insertData: IQuery

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

      Returns boolean

      true при успешной вставке записи, иначе false (нет первичного ключа или ключ запрещён)

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

      Parameters

      • _callback: TQueryCb

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

      Returns unknown

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

      Parameters

      • removeData: IQuery

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

      Returns boolean

      true, если условие содержит первичный ключ (запись удалена или отсутствовала), иначе false

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

      ⚠️ Файловый адаптер поддерживает только точное совпадение значений. Условия с операторами (например, $gt, $in) игнорируются.

      Parameters

      • selectData: IQuery

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

      • where: IQueryData | null

        Сам запрос

      • isOne: boolean = false

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

      Returns IModelRes

      IModelRes — результат выборки: { status: true, data } при успехе, { status: false, error } — если ничего не найдено

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

      Parameters

      • updateData: IQuery

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

      Returns boolean

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

    • Закрывает подключение к определенной таблице. При закрытии, все хранящиеся в памяти данные сохраняются в файл. При повторном close (или таблице без данных) запись не выполняется — только ожидание in-flight операций.

      Parameters

      • tableName: string

        Имя таблицы

      Returns Promise<void>

    • Подключение к файловой БД с side-effect: предзагрузка таблиц UsersData/SoundTokens/ImageTokens (override), чтобы избежать одновременного чтения одного файла под нагрузкой.

      Returns boolean | Promise<boolean>

      true — файловая БД всегда доступна

    • Закрывает все подключения к файловой БД. Все процессы завершаются, и происходит сохранение данных в файл.

      Returns Promise<void>

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

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

      Parameters

      • str: string | number

        Экранируемая строка

      Returns string

      Экранированная строка

    • Загружает данные таблицы из JSON-файла и кэширует их в памяти.

      • При первом обращении читает файл ${tableName}.json из директории appConfig.json.
      • После первого чтения данные берутся только из кэша: mtime проверяется лишь при первом чтении, повторно файл не перечитывается (извне данные менять не должен никто).
      • Отсутствие файла тоже кэшируется: если файла не было при первом обращении, повторно он искаться не будет.
      • В случае ошибки парсинга делается повторная попытка (защита от гонок записи/чтения).

      Формат данных в файле:

      {
      "user123": { "name": "Alice", "age": 30 },
      "user456": { "name": "Bob", "age": 25 }
      }

      где ключ — значение первичного ключа. В случае если файла нет, вернутся пустые данные

      Parameters

      • tableName: string

        Имя таблицы (используется как имя файла)

      Returns TFileData

      Данные таблицы из кэша либо прочитанные из JSON-файла (при повреждении файла — {})

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

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

      Parameters

      Returns IDbResult<unknown> | null

      Данные из res.data при status = true, иначе null

    • Инициализация адаптера: запоминает время старта для детекции многопроцессного доступа к одним и тем же файлам БД.

      Parameters

      • appContext: AppContext

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

      Returns void

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

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

      Parameters

      • insertData: IQuery

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

      Returns Promise<boolean>

      true при успешной вставке, иначе false

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

      Внутри себя вызывает this._query. Метрики времени выполнения не записываются (в отличие от select/insert/update/remove).

      Parameters

      • callback: TQueryCb

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

      Returns unknown

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

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

      Parameters

      • removeData: IQuery

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

      Returns Promise<boolean>

      true при успешном удалении, иначе false

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

      • Если isNew === true → перед insert ключи условия мержатся в данные (saveData.data = {...data, ...query}) и вызывается insert
      • Иначе → сначала делается selectOne по saveData.query, и если запись найдена — вызывается update, иначе — insert (тоже с мерджем ключей условия в данные)

      Parameters

      • saveData: IQuery

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

      • isNew: boolean

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

      Returns Promise<boolean>

      true при успешном сохранении, иначе false

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

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

      Parameters

      • selectData: IQuery

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

      • where: IQueryData | null

        Сам запрос

      • isOne: boolean

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

      Returns Promise<IModelRes<IDataValue>>

      Результат SELECT-запроса (IModelRes)

    • Выполняет SELECT с ограничением до одной записи.

      Parameters

      • selectData: IQuery

        Дополнительные данные для запроса

      • where: IQueryData | null

        Сам запрос (условие выборки). При null или undefined вернётся null

      Returns Promise<IModelRes<IDataValue> | null>

      IModelRes с результатом выборки (одна запись — в data), либо null, если условие не передано. При отсутствии записей возвращается { status: false }.

    • Сохранение данных в кэш (в памяти)

      Parameters

      • tableName: string

        Имя таблицы

      • data: IDBFileInfo | undefined

        Сохраняемые данные

      Returns void

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

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

      Parameters

      • updateData: IQuery

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

      Returns Promise<boolean>

      true при успешном обновлении, иначе false