@calf/common
Version:
Common module of Calf framework.
321 lines (320 loc) • 12.1 kB
TypeScript
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>>;
}