UNPKG

coffee-core

Version:

Coffee IT API core library

79 lines 3.73 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var PrismaClientExceptionFilter_1; Object.defineProperty(exports, "__esModule", { value: true }); exports.PrismaClientExceptionFilter = void 0; const common_1 = require("@nestjs/common"); const library_1 = require("@prisma/client/runtime/library"); let PrismaClientExceptionFilter = PrismaClientExceptionFilter_1 = class PrismaClientExceptionFilter { logger = new common_1.Logger(PrismaClientExceptionFilter_1.name); catch(exception, host) { this.logger.error(exception.message); const ctx = host.switchToHttp(); const response = ctx.getResponse(); let status = common_1.HttpStatus.INTERNAL_SERVER_ERROR; let humanReadableMessage = 'An unexpected error occurred'; switch (exception.code) { case 'P2002': { status = common_1.HttpStatus.CONFLICT; const meta = exception.meta; const uniqueFields = meta?.target?.join(', ') || 'unique fields'; humanReadableMessage = `A record with the same ${uniqueFields} already exists.`; break; } case 'P2003': { status = common_1.HttpStatus.BAD_REQUEST; humanReadableMessage = 'Foreign key constraint failed.'; break; } case 'P2004': { status = common_1.HttpStatus.BAD_REQUEST; humanReadableMessage = 'A constraint failed on the database.'; break; } case 'P2005': { status = common_1.HttpStatus.BAD_REQUEST; humanReadableMessage = 'Invalid value provided for a field.'; break; } case 'P2006': { status = common_1.HttpStatus.BAD_REQUEST; humanReadableMessage = 'Provided value is too long for a field.'; break; } case 'P2007': { status = common_1.HttpStatus.BAD_REQUEST; humanReadableMessage = 'Data validation error.'; break; } case 'P2008': { status = common_1.HttpStatus.INTERNAL_SERVER_ERROR; humanReadableMessage = 'Database query error.'; break; } case 'P2009': { status = common_1.HttpStatus.INTERNAL_SERVER_ERROR; humanReadableMessage = 'Database initialization error.'; break; } default: status = common_1.HttpStatus.INTERNAL_SERVER_ERROR; humanReadableMessage = 'An unexpected error occurred.'; } response.status(status).json({ code: status, type: exception.code, message: humanReadableMessage, }); } }; exports.PrismaClientExceptionFilter = PrismaClientExceptionFilter; exports.PrismaClientExceptionFilter = PrismaClientExceptionFilter = PrismaClientExceptionFilter_1 = __decorate([ (0, common_1.Catch)(library_1.PrismaClientKnownRequestError) ], PrismaClientExceptionFilter); //# sourceMappingURL=prisma-exception.filter.js.map