Files
kittyBE/src/tools/validateSchema.ts
sherl f86630c51e
All checks were successful
Update changelog / changelog (push) Successful in 26s
feat: add link generation support (short/sentence links) + wordlist
2026-01-02 17:50:52 +01:00

41 lines
1.1 KiB
TypeScript

// Heavily based on:
// https://github.com/TomDoesTech/REST-API-Tutorial-Updated/blob/7b5f040e1acd94d267df585516b33ee7e3b75f70/src/middleware/validateResource.ts
import { Request, Response, NextFunction } from 'express';
import { ErrorDTO } from '../schemas/miscSchema';
import z from 'zod';
const validate =
(schema: z.ZodObject) =>
(req: Request, res: Response, next: NextFunction) => {
try {
let validatedData = schema.parse({
body: req.body,
query: req.query,
params: req.params,
});
res.locals.validated = validatedData;
next();
} catch (e: any) {
if (e instanceof z.ZodError) {
let errorResponse: ErrorDTO = {
status: 'error',
error: e.issues[0]?.message ?? 'Unknown error',
code: e.issues[0]?.code
};
return res.status(400)
.json(errorResponse);
} else {
console.log('Generic validation error triggered:', e);
let errorResponse: ErrorDTO = {
status: 'error',
error: 'Unknown error',
code: 'generic-error'
};
return res.status(400)
.json(errorResponse);
}
}
};
export default validate;