diff --git a/src/controllers/projects.controller.ts b/src/controllers/projects.controller.ts new file mode 100644 index 000000000..22ba45de9 --- /dev/null +++ b/src/controllers/projects.controller.ts @@ -0,0 +1,60 @@ +import { Request, Response } from "express"; +import { projectService } from "../services/projects.service"; + +const controller = () => { + const getAllProjects = async (req: Request, res: Response): Promise => { + try { + const allProjects = await projectService.getAllProjects(req); + res.status(200).json(allProjects); + } catch (error) { + console.error(error); + res.status(500).json({ message: "Internal Server Error" }); + } + }; + const getProject = async (req: Request, res: Response): Promise => { + try { + const project = await projectService.getProject(req); + res.status(200).json(project); + } catch (error) { + console.error(error); + res.status(500).json({ message: "Internal Server Error" }); + } + }; + const createProject = async (req: Request, res: Response): Promise => { + try { + const project = await projectService.createProject(req); + res.status(201).json(project); + } catch (error) { + console.error(error); + res.status(500).json({ message: "Internal Server Error" }); + } + }; + const deleteProject = async (req: Request, res: Response): Promise => { + try { + const project = await projectService.deleteProject(req); + res.status(200).json(project); + } catch (error) { + console.error(error); + res.status(500).json({ message: "Internal Server Error" }); + } + }; + const updateProject = async (req: Request, res: Response): Promise => { + try { + const project = await projectService.updateProject(req); + res.status(200).json(project); + } catch (error) { + console.error(error); + res.status(500).json({ message: "Internal Server Error" }); + } + }; + + return { + getAllProjects, + getProject, + createProject, + updateProject, + deleteProject, + }; +}; + +export const projectController = controller(); diff --git a/src/routes/projects.routes.ts b/src/routes/projects.routes.ts new file mode 100644 index 000000000..9e516c234 --- /dev/null +++ b/src/routes/projects.routes.ts @@ -0,0 +1,34 @@ +import express from "express"; +import { projectController } from "../controllers/projects.controller"; +import { authenticateUser } from "../middlewares/auth.middleware"; + +const router = express.Router(); + +// Login route +router.get( + "/:orgId/projects", + authenticateUser, + projectController.getAllProjects +); +router.get( + "/:orgId/project/:id", + authenticateUser, + projectController.getProject +); +router.post( + "/:orgId/project", + authenticateUser, + projectController.createProject +); +router.delete( + "/:orgId/project/:id", + authenticateUser, + projectController.createProject +); +router.put( + "/:orgId/project/:id", + authenticateUser, + projectController.updateProject +); + +export default router; diff --git a/src/server.ts b/src/server.ts index 204ba7e43..d0c233efc 100644 --- a/src/server.ts +++ b/src/server.ts @@ -6,6 +6,7 @@ import dotenv from "dotenv"; import helmet from "helmet"; const PORT = process.env.PORT || 5000; import authRoutes from "./routes/auth.routes"; +import projectRoutes from "./routes/projects.routes"; try { loadConfigFile(parseCLIArgsFromProcess(process.argv)); @@ -24,6 +25,7 @@ try { // Routes app.use("/api.contentstack-migration/v2/auth", authRoutes); + app.use("/api.contentstack-migration/v2/org", projectRoutes); app.use((req: Request, res: Response, next: NextFunction) => { res.setHeader("Access-Control-Allow-Origin", "*"); diff --git a/src/services/projects.service.ts b/src/services/projects.service.ts new file mode 100644 index 000000000..a4175c486 --- /dev/null +++ b/src/services/projects.service.ts @@ -0,0 +1,42 @@ +import { Request } from "express"; + +const service = () => { + const getAllProjects = async (req: Request) => { + const orgId = req?.params?.orgId; + //Add logic to get All Projects from DB + return []; + }; + const getProject = async (req: Request) => { + const orgId = req?.params?.orgId; + const id = req?.params?.id; + //Add logic to get Project from DB + return { orgId, id }; + }; + const createProject = async (req: Request) => { + const orgId = req?.params?.orgId; + //Add logic to create Project from DB + return { orgId }; + }; + + const deleteProject = async (req: Request) => { + const orgId = req?.params?.orgId; + const id = req?.params?.id; + //Add logic to delete Project from DB + return {}; + }; + const updateProject = async (req: Request) => { + const orgId = req?.params?.orgId; + const id = req?.params?.id; + //Add logic to update Project from DB + return { orgId }; + }; + return { + getAllProjects, + getProject, + createProject, + deleteProject, + updateProject, + }; +}; + +export const projectService = service(); diff --git a/src/utils/jwt.utils.ts b/src/utils/jwt.utils.ts index ef3f877a9..b0c16a447 100644 --- a/src/utils/jwt.utils.ts +++ b/src/utils/jwt.utils.ts @@ -6,5 +6,5 @@ const secretKey = process.env.JWT_SECRET_KEY ?? "default_secret_key"; // @typescript-eslint/no-explicit-any export const generateToken = (payload: MigrationPayload): string => { - return jwt.sign(payload, secretKey, { expiresIn: "1h" }); + return jwt.sign(payload, secretKey, { expiresIn: "5d" }); };