dcb-service-core-api/src/common/pipes/validation.pipe.ts
Mamadou Khoussa [028918 DSI/DAC/DIF/DS] c479637d04 first commit
2025-10-21 23:47:31 +00:00

33 lines
1008 B
TypeScript

import { PipeTransform, Injectable, ArgumentMetadata, BadRequestException } from '@nestjs/common';
import { validate } from 'class-validator';
import { plainToClass } from 'class-transformer';
@Injectable()
export class ValidationPipe implements PipeTransform<any> {
async transform(value: any, { metatype }: ArgumentMetadata) {
if (!metatype || !this.toValidate(metatype)) {
return value;
}
const object = plainToClass(metatype, value);
const errors = await validate(object);
if (errors.length > 0) {
const errorMessages = errors.map(error => ({
field: error.property,
errors: Object.values(error.constraints || {}),
}));
throw new BadRequestException({
message: 'Validation failed',
errors: errorMessages,
});
}
return value;
}
private toValidate(metatype: Function): boolean {
const types: Function[] = [String, Boolean, Number, Array, Object];
return !types.includes(metatype);
}
}