umbot
    Preparing search index...

    Структура запроса к базе данных.

    Используется всеми методами адаптера (_select, _insert и др.).

    interface IQuery {
        data: IQueryData | null;
        primaryKeyName: TKey;
        query: IQueryData | null;
        rules: IModelRules[];
        tableName: string;
        uniqueKeys?: string[];
    }
    Index

    Properties

    data: IQueryData | null

    Данные для вставки или обновления

    primaryKeyName: TKey

    Имя поля, используемого как первичный ключ (может быть null)

    query: IQueryData | null

    Условие фильтрации (для SELECT/UPDATE/DELETE)

    rules: IModelRules[]

    Правила валидации модели

    tableName: string

    Название таблицы

    uniqueKeys?: string[]

    Дополнительные поля, которые вместе с primaryKeyName однозначно определяют запись. Нужны, когда значение первичного ключа уникально только в паре с другим полем: userId у UsersData уникален лишь в пределах платформы (пользователь Telegram 42 и пользователь VK 42 — разные люди).

    Модель сама добавляет эти поля в query для selectOne/update/remove. Адаптер, который ищет запись только по primaryKeyName (как FileAdapter по ключу объекта), обязан учитывать и эти поля, иначе записи разных пользователей сольются. Поле опционально: без него поведение прежнее.

    // UsersData: запись определяется парой userId + platform
    const query: IQuery = {
    query: { userId: '42', platform: 'telegram' },
    data: null,
    tableName: 'UsersData',
    primaryKeyName: 'userId',
    uniqueKeys: ['platform'],
    rules: [],
    };