canvas-backend/src/api/project/project.route.ts

54 lines
1.6 KiB
TypeScript

import { Elysia, t } from "elysia";
import { createProject, deleteProject, getAllProjects, getEachProjects, updateProject } from "./project.controller";
import { verifyAuth } from "../../middlewares/auth.middlewares";
export const projectRoutes = new Elysia({
prefix: "/projects",
tags: ["Projects"],
detail: {
description: "Routes for managing projects",
}
}).derive(async ({ cookie }) => {
const authData = await verifyAuth(cookie);
return { authData }; // Inject into context
});
projectRoutes.get("/each/:project_id", ({ params: { project_id } }) => getEachProjects(project_id), {
params: t.Object({
project_id: t.String()
})
});
projectRoutes.get("/", async ({ authData }: any) => {
if (authData.status !== 200)
return authData;
else {
const userId = authData.userId;
const response = await getAllProjects(userId);
return response;
}
});
projectRoutes.post("/create", ({ userId }: any) => createProject(userId));
projectRoutes.put("/update/:project_id", async ({ body, params: { project_id } }) => {
const response = await updateProject(project_id, body);
return response;
}, {
params: t.Object({
project_id: t.String()
}),
body: t.Object({
object: t.Record(t.String(), t.Any()), // Allows any JSON object
name: t.String(),
description: t.String(),
preview_url: t.String(),
})
});
projectRoutes.delete("/delete/:project_id", ({ params: { project_id } }) => deleteProject(project_id), {
params: t.Object({
project_id: t.String()
})
});