diff --git a/api/src/constants/index.ts b/api/src/constants/index.ts index fd77391d..6e02edc2 100644 --- a/api/src/constants/index.ts +++ b/api/src/constants/index.ts @@ -73,7 +73,9 @@ export const HTTP_TEXTS = { ADMIN_LOGIN_ERROR: "Sorry, You Don't have admin access in any of the Organisation", PROJECT_DELETE: - "Project Deleted Successfully" + "Project Deleted Successfully", + PROJECT_REVERT: + "Project Reverted Successfully" }; export const HTTP_RESPONSE_HEADERS = { diff --git a/api/src/controllers/projects.controller.ts b/api/src/controllers/projects.controller.ts index b2b89b08..223254c9 100644 --- a/api/src/controllers/projects.controller.ts +++ b/api/src/controllers/projects.controller.ts @@ -59,6 +59,11 @@ const deleteProject = async (req: Request, res: Response): Promise => { res.status(200).json(project); }; +const revertProject = async (req: Request, res: Response): Promise => { + const project = await projectService.revertProject(req); + res.status(project.status).json(project); +}; + export const projectController = { getAllProjects, getProject, @@ -72,4 +77,5 @@ export const projectController = { updateDestinationStack, updateCurrentStep, deleteProject, + revertProject }; diff --git a/api/src/routes/projects.routes.ts b/api/src/routes/projects.routes.ts index 7450e467..2cca80ab 100644 --- a/api/src/routes/projects.routes.ts +++ b/api/src/routes/projects.routes.ts @@ -68,4 +68,7 @@ router.put( // Delete a project route router.delete("/:projectId", asyncRouter(projectController.deleteProject)); +//revert Project Route +router.patch("/:projectId", asyncRouter(projectController.revertProject)) + export default router; diff --git a/api/src/services/projects.service.ts b/api/src/services/projects.service.ts index 7b4849fe..83d2121b 100644 --- a/api/src/services/projects.service.ts +++ b/api/src/services/projects.service.ts @@ -35,6 +35,7 @@ const getAllProjects = async (req: Request) => { org_id: orgId, region, owner: user_id, + isDeleted:false }) .value(); @@ -748,6 +749,48 @@ const deleteProject = async (req: Request) => { }; }; +const revertProject = async (req: Request) => { + const { orgId, projectId } = req?.params; + const decodedToken = req.body.token_payload; + const { user_id = "", region = "" } = decodedToken; + const srcFunc = "revertProject"; + + await ProjectModelLowdb.read(); + const projectIndex = (await getProjectUtil( + projectId, + { + id: projectId, + org_id: orgId, + region: region, + owner: user_id, + }, + srcFunc, + true + )) as number; + + const projects = ProjectModelLowdb.data.projects[projectIndex]; + if (!projects){ + throw new NotFoundError(HTTP_TEXTS.PROJECT_NOT_FOUND); + } else{ + ProjectModelLowdb.update((data: any) => { + data.projects[projectIndex].isDeleted = false; + }); + logger.info( + getLogMessage( + srcFunc, + `Project [Id : ${projectId}] Reverted Successfully`, + decodedToken + ) + ); + return { + status: HTTP_CODES.OK, + data: { + message: HTTP_TEXTS.PROJECT_REVERT, + Project:projects + }, + }; + } +} export const projectService = { getAllProjects, getProject, @@ -761,4 +804,5 @@ export const projectService = { updateDestinationStack, updateCurrentStep, deleteProject, + revertProject };