Hooks - Service hooks
Eicrud offers a variety of CRUD hooks to perform actions triggered by entity modification or query.
Note
These hooks are specific to each CRUDServices. For global hooks see the controller hooks.
Warning
Any error thrown in a hook cancels the underlying operation. Consider using try...catch blocks to avoid side effects.
Note
Returning a value in an error hook prevents the error from throwing. The value is sent back to the client.
Create Hooks
beforeCreateHook
user.hooks.ts
override async beforeCreateHook(this: UserService, data: User[], ctx) {
    // before User creation
    return data;
}
afterCreateHook
user.hooks.ts
override async afterCreateHook(this: UserService, result: any[], data: User[], ctx) {
    // after User creation
    return result;
}
errorCreateHook
user.hooks.ts
override async errorCreateHook(this: UserService, data: User[], ctx: CrudContext, error: any) {
    // error User creation
    return null;
}
Read hooks
beforeReadHook
user.hooks.ts
override async beforeReadHook(this: UserService, query: User, ctx){
    // before User read
    return query;
}
afterReadHook
user.hooks.ts
override async afterReadHook(this: UserService, result, query: User, ctx){
    // after User read
    return result;
}
errorReadHook
user.hooks.ts
override async errorReadHook(this: UserService, query: User, ctx: CrudContext, error: any) {
    // error User read
    return null;
}
Update Hooks
beforeUpdateHook
user.hooks.ts
override async beforeUpdateHook(this: UserService,
    updates: { query: User; data: User }[],
    ctx
) {
    // before User update
    return updates;
}
afterUpdateHook
user.hooks.ts
override async afterUpdateHook(this: UserService, 
    results: any[],
    updates: { query: User; data: User }[],
    ctx,
) {
    // after User update
    return results;
}
errorUpdateHook
user.hooks.ts
override async errorUpdateHook(this: UserService, 
    updates: { query: User; data: User }[],
    ctx: CrudContext,
    error: any,
) {
    // error User update
    return null;
}
Delete Hooks
beforeDeleteHook
user.hooks.ts
override async beforeDeleteHook(this: UserService, query: User, ctx: CrudContext){
        // before User delete
        return query;
}
afterDeleteHook
user.hooks.ts
override async afterDeleteHook(this: UserService, result, query: User, ctx: CrudContext){
        // after User delete
        return result;
}
errorDeleteHook
user.hooks.ts
override async errorDeleteHook(this: UserService, query: User, ctx: CrudContext, error: any){
    // error User delete
    return null;
}
Controller Hook
user.hooks.ts
override async errorControllerHook(this: UserService, error: any, ctx: CrudContext){
        //after User error
}
Note
Controller hooks are called by the controller and not the service. This means they'll only catch errors that result from a controller call.