Created the group.ts routes

This commit is contained in:
2023-08-02 17:19:04 +02:00
parent db3ef519ae
commit 0bc987943f

49
src/routes/v1/group.ts Normal file

@ -0,0 +1,49 @@
import { Request, Response, Router } from "express";
import { createGroup, deleteGroup, getGroup, listGroups, updateGroup } from "@controller/group";
import { sendError, validateSchema } from "@utils/error";
import { createGroupValidation, updateGroupValidation } from "./validations/group";
const app: Router = Router();
app.get("/:projectId/list", async (req: Request, res: Response) => {
const groups = await listGroups(String(req.user?._id), req.params.projectId);
if ("code" in groups) return res.json(groups);
res.json(groups);
});
app.get("/:projectId/:groupName", async (req: Request, res: Response) => {
const group = await getGroup(String(req.user?._id), req.params.projectId, req.params.groupName);
if ("code" in group) return res.json(group);
res.json(group);
});
app.put("/:projectId", async (req: Request, res: Response) => {
if (validateSchema(res, createGroupValidation, req.body)) return;
const group = await createGroup(String(req.user?._id), req.params.projectId, req.body);
if ("code" in group) return res.json(group);
res.json({ message: "Your group has been successfully created" });
});
app.delete("/:projectId/:groupName", async (req: Request, res: Response) => {
const groupError = await deleteGroup(String(req.user?._id), req.params.projectId, req.params.groupName);
if (groupError) return res.json(groupError);
res.json({ message: "The provided group has been successfully deleted" });
});
app.patch("/:projectId/:groupName", async (req: Request, res: Response) => {
if (validateSchema(res, updateGroupValidation, 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 group = await updateGroup(String(req.user?._id), req.params.projectId, req.params.groupName, req.body);
if ("code" in group) return res.json(group);
res.json({ message: "The provided group has been successfully updated" });
});
export default app;