feat(folders): adopted new strategy for rollback on folders

This commit is contained in:
akhilmhdh
2023-06-04 13:18:05 +05:30
parent 6ce0f48b2c
commit 668b5a9cfd
7 changed files with 188 additions and 113 deletions
@@ -51,6 +51,10 @@ export const createFolder = async (req: Request, res: Response) => {
nodes: folder.nodes,
});
await folderVersion.save();
await EESecretService.takeSecretSnapshot({
workspaceId,
environment,
});
return res.json({ folder: { id, name: folderName } });
}
@@ -66,6 +70,12 @@ export const createFolder = async (req: Request, res: Response) => {
});
await folderVersion.save();
await EESecretService.takeSecretSnapshot({
workspaceId,
environment,
folderId: parentFolderId,
});
return res.json({ folder });
};
@@ -96,7 +106,6 @@ export const updateFolderById = async (req: Request, res: Response) => {
parentFolder.version += 1;
folder.name = name;
folder.version += 1;
await Folder.findByIdAndUpdate(folders._id, folders);
const folderVersion = new FolderVersion({
@@ -106,19 +115,11 @@ export const updateFolderById = async (req: Request, res: Response) => {
});
await folderVersion.save();
// decision to take snapshot ot not
const secretCount = await Secret.count({
workspace: workspaceId,
await EESecretService.takeSecretSnapshot({
workspaceId,
environment,
folder: folderId,
folderId: parentFolder.id,
});
if (secretCount || folder.children.length) {
await EESecretService.takeSecretSnapshot({
workspaceId,
environment,
folderId: parentFolder.id,
});
}
return res.json({
message: "Successfully updated folder",
@@ -148,23 +149,9 @@ export const deleteFolder = async (req: Request, res: Response) => {
}
const { deletedNode: delFolder, parent: parentFolder } = delOp;
parentFolder.version += 1;
const delFolderIds = getAllFolderIds(delFolder);
// take a pre-delete snapshot if there are secrets inside the folders
const secretCount = await Secret.count({
workspace: workspaceId,
environment,
folder: folderId,
});
if (secretCount || delFolder.children.length) {
await EESecretService.takeSecretSnapshot({
workspaceId,
environment,
folderId: parentFolder.id,
});
}
await Folder.findByIdAndUpdate(folders._id, folders);
const folderVersion = new FolderVersion({
workspace: workspaceId,
@@ -180,7 +167,6 @@ export const deleteFolder = async (req: Request, res: Response) => {
});
}
// post delete snapshot
await EESecretService.takeSecretSnapshot({
workspaceId,
environment,