import { ModelValidatorSys, ErrorSys } from '@63pokupki/components/lib'; import { Knex } from 'knex'; import { RedisSys } from './RedisSys'; import { UserSys } from './UserSys'; import { CacheSys } from './CacheSys'; import { LogicSys } from './LogicSys'; import { P63Context } from './P63Context'; import { MonitoringSys } from '@63pokupki/monitoring.lib'; import { DbClientSys } from '@63pokupki/proxy-db'; /** * SQL Запросы */ export default class BaseProxySQLts { protected dbProxy: DbClientSys; /** Единичный ведомая база данных */ protected db: Knex; /** Редис запросы - база данных для кеширования */ protected redisSys: RedisSys; /** Система валидации данных */ protected modelValidatorSys: ModelValidatorSys; /** Система ошибок */ protected errorSys: ErrorSys; protected userSys: UserSys; /** API context */ protected ctx: P63Context; /** система кеширования */ protected cacheSys: CacheSys; /** система мониторинга */ protected monitoringSys: MonitoringSys; protected logicSys: LogicSys; /** init */ constructor(ctx: P63Context); /** * Выполняем запрос */ protected dbExe(vQueryBuilder: Knex.QueryBuilder | Knex.Raw): Promise; protected exe(key: string, cb: () => Promise): Promise; protected throwExe(key: string, cb: () => Promise): Promise; /** * Авто кеширование для встраивания в функцию * @param sKey - Ключ кеша * @param iTimeSec - Время кеширования * @param callback - функция получающая данные из БД */ autoCache(sKey: string, iTimeSec: number, callback: any): Promise; /** * Авто кеширование int переменной для встраивания в функцию * @param sKey - Ключ кеша * @param iTimeSec - Время кеширования * @param callback - функция получающая данные из БД */ autoCacheInt(sKey: string, iTimeSec: number, callback: any): Promise; /** * Авто кеширование ID переменной для встраивания в функцию * @param sKey - Ключ кеша * @param iTimeSec - Время кеширования * @param callback - функция получающая данные из БД */ autoCacheID(sKey: string, iTimeSec: number, callback: any): Promise; /** * Очистить кеш редиса * @param sKey */ clearCache(sKey: string): Promise; }