Files
HIPCTF2/backend/src/common/pipes/zod-validation.pipe.ts
T

17 lines
632 B
TypeScript

import { PipeTransform, Injectable, ArgumentMetadata } from '@nestjs/common';
import { ZodSchema } from 'zod';
import { ApiError } from '../errors/api-error';
@Injectable()
export class ZodValidationPipe implements PipeTransform {
constructor(private readonly schema: ZodSchema) {}
transform(value: any, _metadata: ArgumentMetadata): any {
const parsed = this.schema.safeParse(value);
if (!parsed.success) {
const details = parsed.error.issues.map((i) => ({ path: i.path.join('.'), message: i.message }));
throw ApiError.validation('Request validation failed', details);
}
return parsed.data;
}
}