import type { NextFunction, Request, Response } from 'express'
import type { ZodType } from 'zod'
import { validationError } from '../lib/errors.js'

export const validateBody =
  <T>(schema: ZodType<T>) =>
  (req: Request, _res: Response, next: NextFunction) => {
    const parsed = schema.safeParse(req.body)
    if (!parsed.success) {
      const message = parsed.error.issues.map((issue) => issue.message).join(', ')
      next(validationError(message || 'Invalid request'))
      return
    }
    req.body = parsed.data
    next()
  }
