21 lines
602 B
TypeScript
21 lines
602 B
TypeScript
import { PipeTransform, BadRequestException } from '@nestjs/common';
|
|
import { ZodSchema, ZodError } from 'zod';
|
|
|
|
export class ZodValidationPipe implements PipeTransform {
|
|
constructor(private schema: ZodSchema) {}
|
|
|
|
transform(value: unknown) {
|
|
try {
|
|
return this.schema.parse(value);
|
|
} catch (error) {
|
|
if (error instanceof ZodError) {
|
|
const messages = error.errors.map(
|
|
(e) => `${e.path.join('.')}: ${e.message}`,
|
|
);
|
|
throw new BadRequestException(messages.join('; '));
|
|
}
|
|
throw new BadRequestException('Validation failed');
|
|
}
|
|
}
|
|
}
|