UNPKG

@calf/common

Version:
321 lines (320 loc) 12.1 kB
import { Serializable } from "@calf/serializable"; import { ValidationResult } from "../classes/validation-result.class"; import { ICountQuery } from "../interfaces/count-query.interface"; import { IGetQuery } from "../interfaces/get-query.interface"; import { IListQuery } from "../interfaces/list-query.interface"; import { ISingleQuery } from "../interfaces/single-query.interface"; import { IListQueryResult } from "../interfaces/list-query-result.interface"; import { IRemoveQuery } from "../interfaces/remove-query.interface"; import { IUpdateQuery } from "../interfaces/update-query.interface"; import { IEntityDao } from "../daos/entity.dao"; /** * Entity service */ export declare abstract class EntityService<TEntity extends Serializable, TMessage = string> { protected dao: IEntityDao<TEntity>; /** * Constructor * @param dao */ constructor(dao: IEntityDao<TEntity>); /** * Save entity * @param entity * @param args */ save(entity: TEntity, ...args: any[]): Promise<ValidationResult<TEntity, TMessage>>; /** * Pre save hook * @param validation * @param args */ protected preSave(validation: ValidationResult<TEntity, TMessage>, ...args: any[]): Promise<ValidationResult<TEntity, TMessage>>; /** * Peri save hook * @param validation * @param args */ protected periSave(validation: ValidationResult<TEntity, TMessage>, ...args: any[]): Promise<ValidationResult<TEntity, TMessage>>; /** * Post save hook * @param validation * @param args */ protected postSave(validation: ValidationResult<TEntity, TMessage>, ...args: any[]): Promise<ValidationResult<TEntity, TMessage>>; /** * Count entity * @param query * @param args */ count(query: ICountQuery, ...args: any[]): Promise<ValidationResult<number, TMessage>>; /** * Pre count hook * @param validation * @param query * @param args */ protected preCount(validation: ValidationResult<number, TMessage>, query: ICountQuery, ...args: any[]): Promise<ValidationResult<number, TMessage>>; /** * Peri count hook * @param validation * @param args */ protected periCount(validation: ValidationResult<number, TMessage>, query: ICountQuery, ...args: any[]): Promise<ValidationResult<number, TMessage>>; /** * Post count hook * @param validation * @param query * @param args */ protected postCount(validation: ValidationResult<number, TMessage>, query: ICountQuery, ...args: any[]): Promise<ValidationResult<number, TMessage>>; /** * Get entity * @param entity * @param query * @param args */ get(entity: TEntity, query?: IGetQuery, ...args: any[]): Promise<ValidationResult<TEntity, TMessage>>; /** * Pre get hook * @param validation * @param query * @param args */ protected preGet(validation: ValidationResult<TEntity, TMessage>, query?: IGetQuery, ...args: any[]): Promise<ValidationResult<TEntity, TMessage>>; /** * Peri get hook * @param validation * @param query * @param args * @returns */ protected periGet(validation: ValidationResult<TEntity, TMessage>, query?: IGetQuery, ...args: any[]): Promise<ValidationResult<TEntity, TMessage>>; /** * Post get hook * @param validation * @param args */ protected postGet(validation: ValidationResult<TEntity, TMessage>, ...args: any[]): Promise<ValidationResult<TEntity, TMessage>>; /** * Get single entity by query * @param query * @param args */ single(query: ISingleQuery, ...args: any[]): Promise<ValidationResult<TEntity, TMessage>>; /** * Pre single hook * @param validation * @param query * @param args */ protected preSingle(validation: ValidationResult<TEntity, TMessage>, query: ISingleQuery, ...args: any[]): Promise<ValidationResult<TEntity, TMessage>>; /** * Peri single hook * @param validation * @param query * @param args */ protected periSingle(validation: ValidationResult<TEntity, TMessage>, query: ISingleQuery, ...args: any[]): Promise<ValidationResult<TEntity, TMessage>>; /** * Post single hook * @param validation * @param query * @param args */ protected postSingle(validation: ValidationResult<TEntity, TMessage>, query: ISingleQuery, ...args: any[]): Promise<ValidationResult<TEntity, TMessage>>; /** * Get list of entities * @param query * @param args */ getList(query: IListQuery, ...args: any[]): Promise<ValidationResult<IListQueryResult<TEntity>, TMessage>>; /** * Pre get list hook * @param validation * @param query * @param args */ protected preGetList(validation: ValidationResult<IListQueryResult<TEntity>, TMessage>, query: IListQuery, ...args: any[]): Promise<ValidationResult<IListQueryResult<TEntity>, TMessage>>; /** * Peri get list hook * @param validation * @param query * @param args */ protected periGetList(validation: ValidationResult<IListQueryResult<TEntity>, TMessage>, query: IListQuery, ...args: any[]): Promise<ValidationResult<IListQueryResult<TEntity>, TMessage>>; /** * Post get list * @param validation * @param query * @param args */ protected postGetList(validation: ValidationResult<IListQueryResult<TEntity>, TMessage>, query: IListQuery, ...args: any[]): Promise<ValidationResult<IListQueryResult<TEntity>, TMessage>>; /** * Remove * @param entity * @param args */ remove(entity: TEntity, ...args: any[]): Promise<ValidationResult<TEntity, TMessage>>; /** * Remove list * @param query * @param args */ removeList(query: IRemoveQuery, ...args: any[]): Promise<ValidationResult<any, TMessage>>; /** * Pre remove hook * @param validation * @param query * @param args */ protected preRemove(validation: ValidationResult<TEntity, TMessage>, ...args: any[]): Promise<ValidationResult<TEntity, TMessage>>; /** * Peri remove hook * @param validation * @param query * @param args */ protected periRemove(validation: ValidationResult<TEntity, TMessage>, ...args: any[]): Promise<ValidationResult<TEntity, TMessage>>; /** * Post remove hook * @param validation * @param args */ protected postRemove(validation: ValidationResult<TEntity, TMessage>, ...args: any[]): Promise<ValidationResult<TEntity, TMessage>>; /** * Pre remove list hook * @param validation * @param query * @param args */ protected preRemoveList(validation: ValidationResult<any, TMessage>, query: IRemoveQuery, ...args: any[]): Promise<ValidationResult<any, TMessage>>; /** * Peri remove list hook * @param validation * @param query * @param args */ protected periRemoveList(validation: ValidationResult<any, TMessage>, query: IRemoveQuery, ...args: any[]): Promise<ValidationResult<any, TMessage>>; /** * Post remove list hook * @param validation * @param query * @param args */ protected postRemoveList(validation: ValidationResult<any, TMessage>, query: IRemoveQuery, ...args: any[]): Promise<ValidationResult<any, TMessage>>; /** * Change state * @param entity * @param args */ changeState(entity: TEntity, ...args: any[]): Promise<ValidationResult<TEntity, TMessage>>; /** * Pre change state hook * @param validation * @param args */ protected preChangeState(validation: ValidationResult<TEntity, TMessage>, ...args: any[]): Promise<ValidationResult<TEntity, TMessage>>; /** * Peri change state * @param validation * @param args */ protected periChangeState(validation: ValidationResult<TEntity, TMessage>, ...args: any[]): Promise<ValidationResult<TEntity, TMessage>>; /** * Post change state * @param validation * @param args */ protected postChangeState(validation: ValidationResult<TEntity, TMessage>, ...args: any[]): Promise<ValidationResult<TEntity, TMessage>>; /** * Update * @param query * @param payload * @param args */ update(query: IUpdateQuery, payload: any, ...args: any[]): Promise<ValidationResult<any, TMessage>>; /** * Pre update hook * @param validation * @param query * @param payload * @param args */ protected preUpdate(validation: ValidationResult<any, TMessage>, query: IUpdateQuery, payload: any, ...args: any[]): Promise<ValidationResult<any, TMessage>>; /** * Peri update hook * @param validation * @param query * @param payload * @param args */ protected periUpdate(validation: ValidationResult<any, TMessage>, query: IUpdateQuery, payload: any, ...args: any[]): Promise<ValidationResult<any, TMessage>>; /** * Post update hook * @param validation * @param query * @param payload * @param args */ protected postUpdate(validation: ValidationResult<any, TMessage>, query: IUpdateQuery, payload: any, ...args: any[]): Promise<ValidationResult<any, TMessage>>; /** * Handle update error * @param validation * @param error */ protected handleUpdateError<TError>(validation: ValidationResult<TEntity, TMessage>, error: TError): Promise<ValidationResult<TEntity, TMessage>>; /** * Handle change state error * @param validation * @param error */ protected handleChangeStateError<TError>(validation: ValidationResult<TEntity, TMessage>, error: TError): Promise<ValidationResult<TEntity, TMessage>>; /** * Handle save error * @param error */ protected handleSaveError<TError>(validation: ValidationResult<TEntity, TMessage>, error: TError): Promise<ValidationResult<TEntity, TMessage>>; /** * Handle get error * @param validation * @param error */ protected handleGetError<TError>(validation: ValidationResult<TEntity, TMessage>, error: TError): Promise<ValidationResult<TEntity, TMessage>>; /** * Handle single error * @param validation * @param error */ protected handleSingleError<TError>(validation: ValidationResult<TEntity, TMessage>, error: TError): Promise<ValidationResult<TEntity, TMessage>>; /** * Handle count error * @param validation * @param error */ protected handleCountError<TError>(validation: ValidationResult<number, TMessage>, error: TError): Promise<ValidationResult<number, TMessage>>; /** * Handle get list error * @param validation * @param error */ protected handleGetListError<TError>(validation: ValidationResult<IListQueryResult<TEntity>, TMessage>, error: TError): Promise<ValidationResult<IListQueryResult<TEntity>, TMessage>>; /** * Handle remove list error * @param validation * @param error */ protected handleRemoveListError<TError>(validation: ValidationResult<any, TMessage>, error: TError): Promise<ValidationResult<any, TMessage>>; /** * Handle remove error * @param validation * @param error */ protected handleRemoveError<TError>(validation: ValidationResult<any, TMessage>, error: TError): Promise<ValidationResult<any, TMessage>>; /** * Handle dao error * @param validation * @param error */ protected handleDaoError<TError>(validation: ValidationResult<any, TMessage>, error: TError): Promise<ValidationResult<any, TMessage>>; }