Introduce zod for server-side validations (#4397)

* 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>
This commit is contained in:
Apoorv Mishra
2022-11-24 10:11:43 +05:30
committed by GitHub
parent 100d05035b
commit a6125be6f1
12 changed files with 1901 additions and 1313 deletions

View File

@@ -0,0 +1,17 @@
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();
};
}