UNPKG

umbot

Version:

Мультиплатформенный фреймворк для создания голосовых навыков и чат-ботов с единой бизнес-логикой. Встроенная поддержка ВКонтакте, Telegram, Viber, MAX, Яндекс Алисы, Маруси и Сбера SmartApp. Архитектура на адаптерах позволяет подключать любые другие платф

89 lines (88 loc) 3.4 kB
/** * Модуль для работы с данными запросов к базе данных * * Предоставляет интерфейсы и классы для: * - Формирования параметров запросов * - Парсинга строк запросов * - Управления данными для вставки и обновления */ import { IModelRules } from '../interface/IModel'; /** * Интерфейс для хранения данных запроса к базе данных. * Позволяет задавать произвольные поля и их значения * * Значения могут быть простыми (строка, число) или объектами с операторами (например, $gt, $in). Формат условий зависит от реализации адаптера — фреймворк не навязывает конкретный диалект. * * @example * ```ts * const query: IQueryData = { * id: 1, // Поиск по id = 1 * name: 'John', // Поиск по name = 'John' * age: { $gt: 18 }, // Поиск по age > 18 * city: { $in: ['Moscow', 'St. Petersburg'] } // Поиск по city в списке * }; * ``` */ export interface IQueryData { /** * Произвольные поля запроса * Ключ - название поля в базе данных * Значение - условие для поиска или значение для обновления * * @example * ```ts * { * 'user_id': 123, // Точное совпадение * 'status': 'active', // Точное совпадение * 'age': { $gt: 18 }, // Больше чем * 'tags': { $in: ['a', 'b'] } // В списке значений * } * ``` */ [key: string]: unknown | string | number; } /** * Тип для ключа */ export type TKey = string | number | null; /** * Структура запроса к базе данных. * * Используется всеми методами адаптера (`_select`, `_insert` и др.). */ export interface IQuery { /** * Условие фильтрации (для SELECT/UPDATE/DELETE) */ query: IQueryData | null; /** * Данные для вставки или обновления */ data: IQueryData | null; /** * Название таблиц */ tableName: string; /** * Имя поля, используемого как первичный ключ (может быть null) */ primaryKeyName: TKey; /** * Правила валидации модели */ rules: IModelRules[]; } /** * Парсит строку запроса в объект IQueryData * Поддерживает формат `field=value` с возможностью экранирования * * @example * ```ts * const query = QueryData.getQueryData('`id`=1 `name`="John Doe"'); * // Результат: { id: 1, name: 'John Doe' } * ``` * * @param str - Строка запроса для парсинга * @returns Объект с параметрами запроса или null */ export declare function getQueryData(str: string): IQueryData | null;