"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.validateParams = exports.validateQuery = exports.validate = void 0; const zod_1 = require("zod"); const errors_1 = require("../types/errors"); const validate = (schema) => { return async (req, res, next) => { try { // Validate request body req.body = await schema.parseAsync(req.body); next(); } catch (error) { if (error instanceof zod_1.ZodError) { // Format Zod errors into a user-friendly message const errors = error.errors.map(err => ({ field: err.path.join('.'), message: err.message })); const message = errors.map(e => `${e.field}: ${e.message}`).join(', '); next(new errors_1.ValidationError(message)); } else { next(error); } } }; }; exports.validate = validate; const validateQuery = (schema) => { return async (req, res, next) => { try { // Validate query parameters req.query = await schema.parseAsync(req.query); next(); } catch (error) { if (error instanceof zod_1.ZodError) { // Format Zod errors into a user-friendly message const errors = error.errors.map(err => ({ field: err.path.join('.'), message: err.message })); const message = errors.map(e => `${e.field}: ${e.message}`).join(', '); next(new errors_1.ValidationError(`Invalid query parameters: ${message}`)); } else { next(error); } } }; }; exports.validateQuery = validateQuery; const validateParams = (schema) => { return async (req, res, next) => { try { // Validate route parameters req.params = await schema.parseAsync(req.params); next(); } catch (error) { if (error instanceof zod_1.ZodError) { // Format Zod errors into a user-friendly message const errors = error.errors.map(err => ({ field: err.path.join('.'), message: err.message })); const message = errors.map(e => `${e.field}: ${e.message}`).join(', '); next(new errors_1.ValidationError(`Invalid route parameters: ${message}`)); } else { next(error); } } }; }; exports.validateParams = validateParams; //# sourceMappingURL=validation.js.map