faloker/purify

View on GitHub
api/src/common/filters/mongo-exception.filter.ts

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
import {
  ArgumentsHost,
  Catch,
  ExceptionFilter,
  HttpStatus,
} from '@nestjs/common';
import { MongoError } from 'mongodb';

@Catch(MongoError)
export class MongoExceptionFilter implements ExceptionFilter {
  catch(exception: MongoError, host: ArgumentsHost) {
    const ctx = host.switchToHttp();
    const response = ctx.getResponse();
    const status = HttpStatus.BAD_REQUEST;

    switch (exception.code) {
      case 11000:
        response.status(status).send({
          statusCode: status,
          error: 'Bad Request',
          message: `${exception.errmsg.match(/\{\s.+\s\}/g)[0]} already exists`,
        });
    }
  }
}