From 26c104a6cb4d2dc1cc2ba822b9933842c511026d Mon Sep 17 00:00:00 2001 From: Mathias Wagner Date: Wed, 2 Aug 2023 19:32:28 +0200 Subject: [PATCH] Created the permission.ts routes --- src/routes/v1/permission.ts | 56 +++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) create mode 100644 src/routes/v1/permission.ts diff --git a/src/routes/v1/permission.ts b/src/routes/v1/permission.ts new file mode 100644 index 0000000..f91901c --- /dev/null +++ b/src/routes/v1/permission.ts @@ -0,0 +1,56 @@ +import { Request, Response, Router } from "express"; +import { + createPermission, + deletePermission, + getPermission, + listPermissions, + updatePermission, +} from "@controller/permission"; +import { createPermissionValidation, updatePermissionValidation } from "./validations/permission"; +import { sendError, validateSchema } from "@utils/error"; + +const app: Router = Router(); + +app.get("/:projectId/list", async (req: Request, res: Response) => { + const permissions = await listPermissions(String(req.user?._id), req.params.projectId); + if ("code" in permissions) return res.json(permissions); + + res.json(permissions); +}); + +app.get("/:projectId/:permission", async (req: Request, res: Response) => { + const permission = await getPermission(String(req.user?._id), req.params.projectId, req.params.permission); + if ("code" in permission) return res.json(permission); + + res.json(permission); +}); + +app.put("/:projectId", async (req: Request, res: Response) => { + if (validateSchema(res, createPermissionValidation, req.body)) return; + + const permission = await createPermission(String(req.user?._id), req.params.projectId, req.body); + if ("code" in permission) return res.json(permission); + + res.json({ message: "Your permission has been successfully created" }); +}); + +app.delete("/:projectId/:permission", async (req: Request, res: Response) => { + const permissionError = await deletePermission(String(req.user?._id), req.params.projectId, req.params.permission); + if (permissionError) return res.json(permissionError); + + res.json({ message: "The provided permission has been successfully deleted" }); +}); + +app.patch("/:projectId/:permission", async (req: Request, res: Response) => { + if (validateSchema(res, updatePermissionValidation, req.body)) return; + + if (Object.keys(req.body).length === 0) + return sendError(res, 400, 4, "You need to provide at least one field to update"); + + const permission = await updatePermission(String(req.user?._id), req.params.projectId, req.params.permission, req.body); + if ("code" in permission) return res.json(permission); + + res.json({ message: "The provided permission has been successfully updated" }); +}); + +export default app; \ No newline at end of file