diff --git a/backend/src/services/secret-folder/secret-folder-service.ts b/backend/src/services/secret-folder/secret-folder-service.ts index 793179b44..e06cfcb01 100644 --- a/backend/src/services/secret-folder/secret-folder-service.ts +++ b/backend/src/services/secret-folder/secret-folder-service.ts @@ -478,12 +478,25 @@ export const secretFolderServiceFactory = ({ parentId: string; idOrName: string; }) => { - const targetFolder = await folderDAL.findOne({ - envId: env.id, - [uuidValidate(idOrName) ? "id" : "name"]: idOrName, - parentId, - isReserved: false - }); + let targetFolder = await folderDAL + .findOne({ + envId: env.id, + name: idOrName, + parentId, + isReserved: false + }) + .catch(() => null); + + if (!targetFolder && uuidValidate(idOrName)) { + targetFolder = await folderDAL + .findOne({ + envId: env.id, + id: idOrName, + parentId, + isReserved: false + }) + .catch(() => null); + } if (!targetFolder) { throw new NotFoundError({ message: `Target folder not found` }); @@ -506,7 +519,7 @@ export const secretFolderServiceFactory = ({ } // Find the target folder in the folderPaths to get its full details - const targetFolderWithPath = folderPaths.find((f) => f.id === targetFolder.id); + const targetFolderWithPath = folderPaths.find((f) => f.id === targetFolder!.id); if (!targetFolderWithPath) { throw new NotFoundError({ message: `Target folder path not found` }); } @@ -589,18 +602,40 @@ export const secretFolderServiceFactory = ({ await $checkFolderPolicy({ projectId, env, parentId: parentFolder.id, idOrName }); + let folderToDelete = await folderDAL + .findOne({ + envId: env.id, + name: idOrName, + parentId: parentFolder.id, + isReserved: false + }) + .catch(() => null); + + if (!folderToDelete && uuidValidate(idOrName)) { + folderToDelete = await folderDAL + .findOne({ + envId: env.id, + id: idOrName, + parentId: parentFolder.id, + isReserved: false + }) + .catch(() => null); + } + + if (!folderToDelete) { + throw new NotFoundError({ message: `Folder with ID '${idOrName}' not found` }); + } + const [doc] = await folderDAL.delete( { envId: env.id, - [uuidValidate(idOrName) ? "id" : "name"]: idOrName, + id: folderToDelete.id, parentId: parentFolder.id, isReserved: false }, tx ); - if (!doc) throw new NotFoundError({ message: `Failed to delete folder with ID '${idOrName}', not found` }); - const folderVersions = await folderVersionDAL.findLatestFolderVersions([doc.id], tx); await folderCommitService.createCommit(