From c67968d9ff70abebcb46c132b87df2d3e036c627 Mon Sep 17 00:00:00 2001 From: Mathias Wagner Date: Thu, 3 Aug 2023 12:18:11 +0200 Subject: [PATCH] Created the meta.ts routes --- src/routes/v1/meta.ts | 50 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 src/routes/v1/meta.ts diff --git a/src/routes/v1/meta.ts b/src/routes/v1/meta.ts new file mode 100644 index 0000000..19c172b --- /dev/null +++ b/src/routes/v1/meta.ts @@ -0,0 +1,50 @@ +import { Request, Response, Router } from "express"; +import { createMetaData, deleteMetaData, getMetaData, listMetaData, updateMetaData } from "@controller/meta"; +import { validateSchema } from "@utils/error"; +import { createMetaValidation, updateMetaValidation } from "./validations/meta"; + +const app: Router = Router(); + +app.get("/:projectId/list", async (req: Request, res: Response) => { + const meta = await listMetaData(String(req.user?._id), req.params.projectId); + if ("code" in meta) return res.json(meta); + + res.json(meta); +}); + +app.get("/:projectId/:metaName", async (req: Request, res: Response) => { + const meta = await getMetaData(String(req.user?._id), req.params.projectId, req.params.metaName); + if ("code" in meta) return res.json(meta); + + res.json(meta); +}); + +app.put("/:projectId", async (req: Request, res: Response) => { + if (validateSchema(res, createMetaValidation, req.body)) return; + + const meta = await createMetaData(String(req.user?._id), req.params.projectId, req.body); + if ("code" in meta) return res.json(meta); + + res.json({ message: "Your meta item has been successfully created" }); +}); + +app.delete("/:projectId/:metaName", async (req: Request, res: Response) => { + const metaError = await deleteMetaData(String(req.user?._id), req.params.projectId, req.params.metaName); + if (metaError) return res.json(metaError); + + res.json({ message: "The provided meta item has been successfully deleted" }); +}); + +app.patch("/:projectId/:metaName", async (req: Request, res: Response) => { + if (validateSchema(res, updateMetaValidation, req.body)) return; + + if (Object.keys(req.body).length === 0) + return res.json({ code: 4, message: "You need to provide at least one field to update" }); + + const meta = await updateMetaData(String(req.user?._id), req.params.projectId, req.params.metaName, req.body); + if ("code" in meta) return res.json(meta); + + res.json({ message: "The provided meta item has been successfully updated" }); +}); + +export default app; \ No newline at end of file