import { CacheEmitter } from '@berish/emitter'; import { Entity, FileEntity } from '../entity'; import { QueryData, QueryDataSchema } from '../query'; import { BaseDBAdapter, IBaseDBItem } from '../baseDBAdapter'; import { BaseFileAdapter, IBaseFileItem } from '../baseFileAdapter'; export declare class Manager { private _dbAdapter; private _fileAdapter; private _cacheEmitter; /** * Emitter для работы с событиями внутри менеджера */ get cacheEmitter(): CacheEmitter; get isInitializedDbAdapter(): boolean; get isInitializedFileAdapter(): boolean; /** * Объект для работы с dbAdapter. * Все методы имеют непрямой доступ к адаптеру, используют проверку разрешений и оптимизацию перед реальными запросами. * Данные методы не стоит использовать для работы с базой данных, так как все аргументы и ответы реализованы с использованием примитивов. * Необходимо использовать в качестве вспомогательных методов через функции обработчики (с использованием типов ORM) */ get db(): { create: (table: string, items: IBaseDBItem[]) => Promise; update: (table: string, items: IBaseDBItem[]) => Promise; index: (table: string, indexName: string, keys?: string[]) => void; get: (data: QueryData) => Promise; count: (data: QueryData) => Promise; delete: (data: QueryData) => Promise; find: (data: QueryData) => Promise; subscribe: (data: QueryData, callback: (oldValue: IBaseDBItem, newValue: IBaseDBItem, newValueIndex?: number) => any, onError?: (reason: any) => any) => () => any; }; /** * Объект для работы с fileAdapter. * Все методы имеют непрямой доступ к адаптеру, используют проверку разрешений и оптимизацию перед реальными запросами. * Данные методы не стоит использовать для работы с базой данных, так как все аргументы и ответы реализованы с использованием примитивов. * Необходимо использовать в качестве вспомогательных методов через функции обработчики (с использованием типов ORM) */ get file(): { create: (items: IBaseFileItem[]) => Promise; get: (ids: string[], fetchData: boolean) => Promise; delete: (ids: string[]) => Promise; }; /** * Инициализация DB Adapter для работы с базой даннных * @param dbAdapter Адаптер базы данных * @param params Параметры для инициализации адаптера базы данных */ initDbAdapter>(dbAdapter: T, params: T['params']): Promise; /** * Инициализация File Adapter для работы с базой данных * @param fileAdapter Адаптер работы с файлами * @param params Параметры для инициализации файлового адаптера */ initFileAdapter>(fileAdapter: T, params: T['params']): Promise; closeDbAdapter(): Promise; closeFileAdapter(): Promise; /** * * @param items * @param deep */ getAll(items: { id: string; className: string; }[], deep?: number): Promise<{ [className: string]: T[]; }>; save(items: Entity[]): Promise; remove(items: Entity[]): Promise; /** * Главный метод для получения файлов * @param single ID файла или существующий FileEntity * @param array ID файлов или существующие FileEntity * @param fetchData Если true то указываем, что необходимо получить контент файлов. Если false то получает только мета-информацию по файлам. По-умолчанию false */ getFile(single: string | FileEntity, fetchData?: boolean): Promise; getFile(array: (string | FileEntity)[], fetchData?: boolean): Promise; /** * Метод для сохранения файлов * @param files FileEntity или массив FileEntity */ saveFile(files: FileEntity | FileEntity[]): Promise; /** * Метод для удаления файлов * @param files FileEntity или массив FileEntity */ removeFile(files: string | string[] | FileEntity | FileEntity[]): Promise; private _db_create; private _db_update; private _db_index; private _db_get; private _db_count; private _db_delete; private _db_find; private _db_subscribe; private _file_create; private _file_get; private _file_delete; }