23 lines
747 B
TypeScript
23 lines
747 B
TypeScript
import { ArgumentsHost, Catch, ExceptionFilter, HttpException } from '@nestjs/common';
|
|
import type { Request, Response } from 'express';
|
|
import { TypeORMError } from 'typeorm';
|
|
|
|
@Catch(HttpException)
|
|
export class HttpExceptionFilter implements ExceptionFilter {
|
|
catch(exception: HttpException, host: ArgumentsHost) {
|
|
const ctx = host.switchToHttp();
|
|
const response = ctx.getResponse<Response>();
|
|
const request = ctx.getRequest<Request>();
|
|
|
|
const statusCode = exception.getStatus();
|
|
const message = (exception.getResponse() as TypeORMError).message || exception.message;
|
|
|
|
response.status(statusCode).json({
|
|
statusCode,
|
|
message,
|
|
timestamp: new Date().toISOString(),
|
|
path: request.url,
|
|
});
|
|
}
|
|
}
|