Tokiva-backend-Node / src /middlewares /validate.middleware.ts
anoderb
feat: initial commit of Tokiva POS Node backend for Hugging Face
ef874e6
Raw
History Blame Contribute Delete
969 Bytes
import { Request, Response, NextFunction } from 'express';
import { AnyZodObject, ZodError } from 'zod';
export const validate = (schema: AnyZodObject) => {
return async (req: Request, res: Response, next: NextFunction) => {
try {
const parsed = await schema.parseAsync({
body: req.body,
query: req.query,
params: req.params,
});
if (parsed.body !== undefined) req.body = parsed.body;
if (parsed.query !== undefined) req.query = parsed.query;
if (parsed.params !== undefined) req.params = parsed.params;
return next();
} catch (error) {
if (error instanceof ZodError) {
return res.status(400).json({
sukses: false,
pesan: 'Validasi input gagal',
errors: error.errors.map((err) => ({
field: err.path.slice(1).join('.'),
message: err.message,
})),
});
}
return next(error);
}
};
};