* chore(server): use zod for validations * fix(server): use ctx.input for documents.list * fix(server): schema for documents.archived * fix(server): documents.deleted, documents.viewed & documents.drafts * fix(server): documents.info * fix(server): documents.export & documents.restore * fix(server): documents.search_titles & documents.search * fix(server): documents.templatize * fix(server): replace nullish() with optional() * fix(server): documents.update * fix(server): documents.move * fix(server): remaining * fix(server): add validation for snippet min and max words * fix(server): fix update types * fix(server): remove DocumentSchema * fix(server): collate duplicate schemas * fix: typos * fix: reviews * chore: Fixed case of Metrics import * fix: restructure /api * fix: loosen validation for id as it can be a slug too * Add test for query by slug Simplify import Co-authored-by: Tom Moor <tom.moor@gmail.com>
18 lines
557 B
TypeScript
18 lines
557 B
TypeScript
import { Next } from "koa";
|
|
import { z } from "zod";
|
|
import { ValidationError } from "@server/errors";
|
|
import { APIContext } from "@server/types";
|
|
|
|
export default function validate<T extends z.ZodTypeAny>(schema: T) {
|
|
return async function validateMiddleware(ctx: APIContext<T>, next: Next) {
|
|
try {
|
|
ctx.input = schema.parse(ctx.request.body);
|
|
} catch (err) {
|
|
const { path, message } = err.issues[0];
|
|
const [prefix = "ValidationError"] = path;
|
|
throw ValidationError(`${prefix}: ${message}`);
|
|
}
|
|
return next();
|
|
};
|
|
}
|