Skip to content

Commit 6eb85d9

Browse files
Refactor ValidationException class and add ValidationExceptionPayload type
1 parent 4334527 commit 6eb85d9

File tree

2 files changed

+42
-5
lines changed

2 files changed

+42
-5
lines changed
Lines changed: 35 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,43 @@
11
import { HttpException } from '@nestjs/common';
2+
import { ValidationExceptionPayload } from '~/_common/types/validation-exception-payload.type';
3+
4+
const DEFAULT_STATUS_CODE = 400;
5+
const DEFAULT_MESSAGE = 'Validation failed';
6+
const DEFAULT_VALIDATIONS: Record<string, string> = {};
27

38
export class ValidationException extends HttpException {
4-
constructor(message, statusCode = 400) {
5-
super(message, statusCode);
9+
private readonly validations: Record<string, string>;
10+
11+
constructor(payload: ValidationExceptionPayload) {
12+
const { message, validations, statusCode } = payload;
13+
super(message || DEFAULT_MESSAGE, statusCode || DEFAULT_STATUS_CODE);
614
this.name = this.constructor.name;
7-
this.getStatus = () => statusCode;
15+
this.validations = validations || DEFAULT_VALIDATIONS;
16+
}
17+
18+
getValidations(): Record<string, string> {
19+
return this.validations;
20+
}
21+
22+
getPayload(): ValidationExceptionPayload {
23+
return {
24+
message: this.message,
25+
statusCode: this.getStatus(),
26+
validations: this.validations,
27+
};
828
}
929
}
1030

11-
export class ValidationSchemaException extends ValidationException {}
31+
export class ValidationSchemaException extends ValidationException {
32+
constructor(payload: ValidationExceptionPayload) {
33+
payload.message = payload.message || 'Wrong schema validation';
34+
super(payload);
35+
}
36+
}
1237

13-
export class ValidationConfigException extends ValidationException {}
38+
export class ValidationConfigException extends ValidationException {
39+
constructor(payload: ValidationExceptionPayload) {
40+
payload.message = payload.message || 'Wrong config validation';
41+
super(payload);
42+
}
43+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
import { HttpStatus } from '@nestjs/common';
2+
3+
export type ValidationExceptionPayload = {
4+
message?: string;
5+
statusCode?: HttpStatus;
6+
validations?: Record<string, string>;
7+
};

0 commit comments

Comments
 (0)