NestJS - Prisma Exception Filter in Cron

192 Views Asked by At

In one of my nestjs projects I have created the prisma custom exception filters.

This code works properly for http request. But while I use cron then this does not work for me. In cron if any prisma error occurs then it stops execution and throw PrismaClientKnownRequestError error in the console directly.

Did I do any mistake? Or exception filter does not work in cron? Please help me! Any help will be appreciated. Thanks.

Prisma exception filter code:

@Catch(Prisma.PrismaClientKnownRequestError)
export class PrismaClientKnownRequestErrorExceptionFilter extends BaseExceptionFilter {
  logger = new Logger('PrismaClient');

  catch(
    exception: Prisma.PrismaClientKnownRequestError,
    host: ArgumentsHost,
  ): void {
    const ctx: HttpArgumentsHost = host.switchToHttp();
    const request: Request = ctx.getRequest<Request>();
    const response: Response = ctx.getResponse<Response>();

    let statusCode: HttpStatus;
    let message: string;
    switch (exception.code) {
      case 'P2002': // unique constraint or duplication
        statusCode = HttpStatus.CONFLICT;
        message = `Unique constraint failed on the constraint: ${exception?.meta?.['target']}`;
        break;
      ....
      default:
        // super.catch(exception, host);
        statusCode = HttpStatus.INTERNAL_SERVER_ERROR;
        message = exception.message.replace(/\r/g, '').replace(/\n/g, '');
        break;
    }

    this.logger.error(message);
    this.response(statusCode, message, request, response);
  }

  response(
    statusCode: HttpStatus,
    message: string,
    request: Request,
    response: Response,
  ) {
    response.status(statusCode).json({
      statusCode,
      message,
      timestamp: new Date().toISOString(),
      path: request.url,
    });
  }
}

I added the filter in app module as provider like -

{
  provide: APP_FILTER,
  useClass: PrismaClientKnownRequestErrorExceptionFilter,
}
0

There are 0 best solutions below