import { IModel } from "../interfaces/model.interface"; import { TIdentifierTypes } from "../interfaces/identifer-types.type"; import { QueryOptions } from "../classes/query-options.class"; import { Storeable } from "../classes/storeable.class"; import { IValidationResult } from "@sugoi/core/dist/policies/interfaces/policy-schema-validator.interface"; export declare abstract class ModelAbstract extends Storeable implements IModel { private static modelName; constructor(); static setModelName(name?: string): void; static setCollectionName(name?: string): void; static getModelName(): string; static getCollectionName(): string; static find(query?: any, options?: Partial): Promise>; static findOne(query?: any, options?: Partial): Promise; static findAll(query?: any, options?: Partial): Promise; static findById(id: TIdentifierTypes, options?: Partial): Promise; sugBeforeFind(query: any, options: any): Promise; sugAfterFind(resolvedData: T): Promise; protected static findPipe(query?: any, options?: Partial): Promise; protected static findEmitter(query: any, options?: Partial): Promise; save(options?: Partial, data?: any): Promise; protected abstract saveEmitter(options?: Partial, data?: any): Promise; protected sugBeforeValidate(options: any): Promise; sugValidate(): Promise; protected sugBeforeSave(): Promise; protected sugAfterSave(savedData: T): Promise; update(options?: Partial, query?: { [prop: string]: string | number | boolean; }): Promise; static updateAll(query: any, data: any, options?: Partial): Promise; static updateById(id: TIdentifierTypes, data: any, options?: Partial): Promise; protected abstract updateEmitter(options?: Partial, query?: any): Promise; sugBeforeUpdate(): Promise; sugAfterUpdate(updatedData: T): Promise; remove(query?: any, options?: Partial): Promise; static removeById(id: TIdentifierTypes, options?: Partial): Promise; static removeOne(query?: any, options?: Partial): Promise; static removeAll(query?: any, options?: Partial): Promise; protected static removePipe(query?: any, options?: Partial): Promise; protected static removeEmitter(query?: any, options?: Partial): Promise; sugBeforeRemove(query: any, options: any): Promise; sugAfterRemove(data: T): Promise; /** * Set the value of class primary property * * @param {TIdentifierTypes} value */ setPrimaryPropertyValue(value: TIdentifierTypes): void; static clone(data: any): T; static clone(data: any, applyConstructor: boolean): T; static clone(classInstance: any, data: any): T; static clone(classInstance: any, data: any, applyConstructor: boolean): T; static cast(data: any, applyConstructor?: boolean): any; /** * In case string is passed this function build query object using the class primary key * @param {string | any} query * @param {any} classToUse - class to take the primary key from * @returns {{[prop:string}:TIdentifierTypes} */ static castIdToQuery(query: string | any, classToUse?: typeof ModelAbstract): any; /** * Check if the primary key found in the query and return his value * * @param query - The query object * @param {any} classToUse - class to take the primary key from * @param {boolean} deleteProperty - flag to remove the primaryKey property from the query * @returns {TIdentifierTypes} */ static getIdFromQuery(query: any, classToUse?: any, deleteProperty?: boolean): TIdentifierTypes; /** * build and return query object containing the primary key and his value * @returns {{[primaryKey]:TIdentifierTypes}} */ getIdQuery(): { [x: string]: any; }; validateModel(options: Partial): Promise; protected validateMandatoryFields(): modelValidate; skipRequiredFieldsValidation(shouldSkip: boolean): void; } interface modelValidate extends IValidationResult { field?: string; } export {};