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,
}