import type { Request, Response, NextFunction } from 'express'; import { ZodSchema, ZodError } from 'zod'; export const validateRequest = (schema: ZodSchema) => { return (req: Request, res: Response, next: NextFunction) => { try { schema.parse(req.body); next(); } catch (error) { if (error instanceof ZodError) { const errors = error.errors.map(err => ({ field: err.path.join('.'), message: err.message })); return res.status(400).json({ success: false, error: 'Ошибка валидации данных', details: errors }); } return res.status(400).json({ success: false, error: 'Неверные данные запроса' }); } }; }; export const validateQuery = (schema: ZodSchema) => { return (req: Request, res: Response, next: NextFunction) => { try { schema.parse(req.query); next(); } catch (error) { if (error instanceof ZodError) { const errors = error.errors.map(err => ({ field: err.path.join('.'), message: err.message })); return res.status(400).json({ success: false, error: 'Ошибка валидации параметров', details: errors }); } return res.status(400).json({ success: false, error: 'Неверные параметры запроса' }); } }; };