umbot
    Preparing search index...

    Модель для управления звуковыми файлами в различных платформах. Предоставляет единый интерфейс для работы со звуковыми файлами в Алисе, ВКонтакте, Telegram, Марусе и тд.

    // Создание и загрузка звукового файла для Telegram
    const sound = new SoundTokens(appContext);
    sound.path = '/path/to/audio.mp3';
    sound.platform = T_TELEGRAM;
    const found = await sound.selectOne();
    if (found.status) {
    console.log('Токен для звукового файла успешно получен, токен:', found.data?.soundToken);
    } else {
    // Загрузка аудиофайла в платформу — токен выдаёт API платформы,
    // затем он присваивается модели и запись сохраняется в БД
    sound.soundToken = tokenFromPlatform;
    const saved = await sound.save(true); // save() возвращает boolean, а не токен
    console.log('Запись сохранена:', saved);
    }

    Hierarchy (View Summary)

    Index

    Constructors

    • Конструктор класса SoundTokens. Предоставляет унифицированный интерфейс для хранения данных о загруженных аудиофайлах.

      Parameters

      • appContext: AppContext

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

      Returns SoundTokens

    Properties

    _appContext: AppContext

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

    isAttachContent: boolean

    Флаг, указывающий, что передается содержимое файла. Если true, то path содержит содержимое файла, а не путь к нему. Поле предназначено для пользовательского кода (аналог флага TSoundCallback); сам фреймворк его не устанавливает и не читает (VK/Sound.ts задаёт одноимённый флаг на VkRequest, а не на модель).

    false
    
    queryData: IQuery

    Объект для хранения параметров запроса. Содержит условия поиска и данные для обновления

    startIndex: number = 0

    Начальный индекс для итерации по данным. Используется при инициализации модели из массива

    state: Partial<TState> = {}

    Состояние модели. Содержит текущие значения всех атрибутов

    // Установка значений
    this.state.username = 'John';
    this.state.age = 25;

    // Получение значений
    console.log(this.state.username);
    TABLE_NAME: "SoundTokens" = 'SoundTokens'

    Название таблицы для хранения данных о звуковых файлах.

    Accessors

    • get path(): string

      Путь к файлу. Может быть URL-адресом звукового файла или путем к локальному файлу.

      Returns string

      "/path/to/audio.mp3" или "http://localhost/audio.mp3"
      
    • set path(path: string | null): void

      Устанавливает путь к файлу.

      Parameters

      • path: string | null

        Путь к аудиофайлу или URL

      Returns void

    • get platform(): string

      Тип платформы. Определяет, для какой платформы предназначен звуковой файл.

      Returns string

    • set platform(platform: string): void

      Устанавливает тип платформы.

      Parameters

      • platform: string

        Тип платформы (alisa, telegram, vk и т.д.)

      Returns void

    • get soundToken(): string

      Идентификатор звукового файла. Уникальный идентификатор, используемый для ссылки на звуковой файл в API различных платформ.

      Returns string

      "doc123456789" для VK, "file_id_123456" для Telegram
      
    • set soundToken(soundToken: string | null): void

      Устанавливает идентификатор звукового файла.

      Parameters

      • soundToken: string | null

        Токен звукового файла

      Returns void

    Methods

    • Добавляет новую запись в базу данных

      Returns Promise<boolean>

      Promise с результатом операции

      model.state.name = 'John';
      await model.add();
    • Закрывает соединение с базой данных

      Returns void | Promise<void>

      model.destroy();
      
    • Экранирует специальные символы в строке

      Parameters

      • text: string | number

        Строка или число для экранирования

      Returns string

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

      const safe = model.escapeString("O'Connor");
      
    • Инициализирует модель данными

      Parameters

      • data: IDbResult<unknown> | IDbResult<unknown>[] | null

        Данные для инициализации

      Returns void

      // Объект: значения сопоставляются по именам полей (меткам attributeLabels)
      model.init({
      id: 1,
      username: 'John',
      age: 25
      });
    • Проверяет состояние подключения к базе данных

      Returns boolean | Promise<boolean>

      true если подключение активно (синхронно false без адаптера БД, иначе Promise от адаптера)

      const isConnected = await model.isConnected();
      if (isConnected) {
      // Выполнение операций с базой данных
      }
    • Выполняет произвольный запрос к базе данных

      Типы client/db зависят от подключённого адаптера БД — для MongoAdapter это MongoClient и Db из драйвера mongodb. Для FileAdapter _query не реализован — метод вернёт null.

      Parameters

      • callback: TQueryCb

        Функция обратного вызова для выполнения запроса

      Returns unknown

      Результат выполнения запроса

      import type { MongoClient, Db } from 'mongodb';

      const result = await model.query(async (client: MongoClient, db: Db) => {
      const collection = db.collection('users');
      return await collection.aggregate([
      { $match: { age: { $gt: 18 } } },
      { $group: { _id: '$city', count: { $sum: 1 } } }
      ]).toArray();
      });
    • Удаляет запись из базы данных

      Returns Promise<boolean>

      Promise - true если удаление успешно

      await model.remove();
      
    • Сохраняет данные модели в базу данных Если запись существует - обновляет, иначе создает новую

      Parameters

      • isNew: boolean = false

        Флаг создания новой записи

      Returns Promise<boolean>

      Promise с результатом операции

      model.state.name = 'John';
      await model.save(); // Обновление существующей записи
      await model.save(true); // Создание новой записи
    • Находит token звукового файла по пути и платформе.

      Для SoundTokens логичный lookup идёт по path+platform, а не по soundToken (он ещё null на новой модели).

      Returns Promise<ISelectOneModelRes>

      Promise с результатом поиска {status, data, error}. При успехе data содержит найденную запись модели, а не сам токен.

    • Возвращает название таблицы/файла с данными.

      Returns string

      Название таблицы для хранения данных о звуковых файлах

    • Обновляет существующую запись в базе данных

      Returns Promise<boolean>

      Promise с результатом операции

      model.state.name = 'John';
      await model.update();
    • Выполняет валидацию данных модели Может быть переопределен в дочерних классах

      Returns void

      validate(): void {
      if (!this.state.username) {
      throw new Error('Username is required');
      }
      }
    • Выполняет произвольный запрос к базе данных

      Parameters

      • where: string | IQueryData = '1'

        Условия запроса

      • isOne: boolean = false

        Флаг выборки одной записи

      Returns Promise<IModelRes<IDataValue>>

      Promise с результатом запроса

      // Объект условий — точные значения полей
      const res = await model.where({ age: 25 });

      // Строка условий формата getQueryData
      const res2 = await model.where('`age`=25 `status`="active"');
    • Выполняет запрос с выборкой одной записи

      Parameters

      • where: string | IQueryData = '1'

        Условия запроса

      Returns Promise<boolean>

      Promise - true если запись найдена

      const found = await model.whereOne({ id: 1 });
      if (found) {
      console.log('Запись найдена');
      }