From 7f92d7f903d83290d9a695f406418725a03a985e Mon Sep 17 00:00:00 2001 From: Mathias Wagner Date: Sat, 20 Jul 2024 12:30:14 +0200 Subject: [PATCH] Create error.ts util --- src/utils/error.ts | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 src/utils/error.ts diff --git a/src/utils/error.ts b/src/utils/error.ts new file mode 100644 index 0000000..8cd99d7 --- /dev/null +++ b/src/utils/error.ts @@ -0,0 +1,20 @@ +import { Response } from "express"; +import { ObjectSchema } from "joi"; + +const codeMappings: Record = { + "any.required": 1, // TODO + "any": 0 +}; + +export const sendError = (res: Response, httpCode: number, errorCode: number, message: string, fieldName?: string) => + res.status(httpCode).json({ code: errorCode, message, fieldName }); + +export const validateSchema = (res: Response, schema: ObjectSchema, object: Record) => { + const { error } = schema.validate(object, { errors: { wrap: { label: "" } } }); + const errorCode: number = codeMappings[error?.details[0].type || "any"] || 0; + const message: string = error?.details[0].message || "No message provided"; + + if (error) sendError(res, 400, errorCode, message, error?.details[0].context?.key); + + return error; +}; \ No newline at end of file