From de6dde9bfa8d4c8ab2709f1e694b23f353cf8824 Mon Sep 17 00:00:00 2001 From: sachdevavaibhav Date: Fri, 28 Feb 2025 18:04:00 +0530 Subject: [PATCH] fix: update project name when performing soft delete --- .../__test__/projects.controller.test.ts | 2 ++ app/dataController/projects.controller.ts | 1 + app/db/dao/projects.dao.ts | 10 +++++++++- .../api/v1/__tests__/updateProjectStatus.test.ts | 1 + app/screens/Projects/ProjectListColumnConfig.tsx | 4 +++- 5 files changed, 16 insertions(+), 2 deletions(-) diff --git a/app/dataController/__test__/projects.controller.test.ts b/app/dataController/__test__/projects.controller.test.ts index 4094f09..ea33a43 100644 --- a/app/dataController/__test__/projects.controller.test.ts +++ b/app/dataController/__test__/projects.controller.test.ts @@ -149,6 +149,7 @@ describe('ProjectsController', () => { projectId: 123, status: 'Archived' as IArchiveProjects['status'], userId: 456, + updatedName: 'Website_2025-02-28T12:01:12.807Z', } const mockResponse = {affectedRows: 1} @@ -167,6 +168,7 @@ describe('ProjectsController', () => { projectId: 123, status: 'Archived' as IArchiveProjects['status'], userId: 456, + updatedName: 'Website_2025-02-28T12:01:12.807Z', } const mockError = new Error('Database error') diff --git a/app/dataController/projects.controller.ts b/app/dataController/projects.controller.ts index fec7ea0..d830219 100644 --- a/app/dataController/projects.controller.ts +++ b/app/dataController/projects.controller.ts @@ -26,6 +26,7 @@ export interface IArchiveProjects { projectId: number status: 'Active' | 'Archived' | 'Deleted' userId: number + updatedName?: string } const ProjectsController = { diff --git a/app/db/dao/projects.dao.ts b/app/db/dao/projects.dao.ts index daa16f9..9fd3355 100644 --- a/app/db/dao/projects.dao.ts +++ b/app/db/dao/projects.dao.ts @@ -136,11 +136,19 @@ const ProjectsDao = { projectId, status, userId, + updatedName, }: IArchiveProjects) => { try { + if (status === 'Archived' && !updatedName) { + throw new Error('Updated name is required for archiving the project') + } const archiveProject = await dbClient .update(projects) - .set({status, updatedBy: userId}) + .set({ + status, + updatedBy: userId, + ...(updatedName && {projectName: updatedName}), + }) .where(eq(projects.projectId, projectId)) return archiveProject } catch (error: any) { diff --git a/app/routes/api/v1/__tests__/updateProjectStatus.test.ts b/app/routes/api/v1/__tests__/updateProjectStatus.test.ts index 6b09abc..866d5d4 100644 --- a/app/routes/api/v1/__tests__/updateProjectStatus.test.ts +++ b/app/routes/api/v1/__tests__/updateProjectStatus.test.ts @@ -25,6 +25,7 @@ describe('Update Project Status - Action Function', () => { const requestData = { projectId: 123, status: 'Archived', + updatedName: 'Website_2025-02-28T12:01:12.807Z', } const request = new Request('http://localhost', { method: 'POST', diff --git a/app/screens/Projects/ProjectListColumnConfig.tsx b/app/screens/Projects/ProjectListColumnConfig.tsx index 67491a2..8556436 100644 --- a/app/screens/Projects/ProjectListColumnConfig.tsx +++ b/app/screens/Projects/ProjectListColumnConfig.tsx @@ -317,10 +317,12 @@ export const PROJECT_LIST_COLUMN_CONFIG: ColumnDef[] = [ const handleConfirmDelete = async (event: React.MouseEvent) => { const projectId = row.original.projectId + const timestampString = new Date().toISOString() + const updatedName = `${row.original.projectName}_${timestampString}` const status = 'Archived' updateProjectStatus.submit( - {projectId, status}, + {projectId, status, updatedName}, { method: 'put', action: `/${API.EditProjectStatus}`,