Refactor folder controller

This commit is contained in:
Maidul Islam
2023-03-30 10:30:18 -07:00
parent 532c864a89
commit 75958d4d10
3 changed files with 61 additions and 68 deletions

View File

@@ -1,15 +1,61 @@
import { Request, Response } from 'express';
import { Secret } from '../../models';
import Folder from '../../models/folder';
import { BadRequestError } from '../../utils/errors';
// export const createFolder = async (req: Request, res: Response) => {
export const createFolder = async (req: Request, res: Response) => {
const { workspaceId, environment, folderName, parentFolderId } = req.body
if (parentFolderId) {
const parentFolder = await Folder.findById(parentFolderId);
if (!parentFolder) {
throw BadRequestError({ message: "The parent folder doesn't exist" })
}
}
// };
const existingFolder = await Folder.findOne({
name: folderName,
workspace: workspaceId,
environment: environment,
parent: parentFolderId,
});
// export const deleteFolder = async (req: Request, res: Response) => {
if (existingFolder) {
return res.json(existingFolder)
}
// };
const newFolder = new Folder({
name: folderName,
workspace: workspaceId,
environment: environment,
parent: parentFolderId,
});
// export const moveSecretsBetweenFolders = async (req: Request, res: Response) => {
await newFolder.save();
// };
return res.json(newFolder)
}
export const deleteFolder = async (req: Request, res: Response) => {
const { folderId } = req.params
const queue: any[] = [folderId];
const folder = await Folder.findById(folderId);
if (!folder) {
throw BadRequestError({ message: "The folder doesn't exist" })
}
while (queue.length > 0) {
const currentFolderId = queue.shift();
const childFolders = await Folder.find({ parent: currentFolderId });
for (const childFolder of childFolders) {
queue.push(childFolder._id);
}
await Secret.deleteMany({ folder: currentFolderId });
await Folder.deleteOne({ _id: currentFolderId });
}
res.send()
}

View File

@@ -374,9 +374,9 @@ export const createSecrets = async (req: Request, res: Response) => {
secretCommentIV,
secretCommentTag,
tags,
folderId
folder
} of listOfSecretsToCreate) {
const fullFolderPath = await getFolderPath(folderId)
const fullFolderPath = await getFolderPath(folder)
const secret: any = {
version: 1,
@@ -394,6 +394,7 @@ export const createSecrets = async (req: Request, res: Response) => {
secretCommentIV,
secretCommentTag,
tags,
folder: folder,
path: fullFolderPath
};
@@ -792,10 +793,10 @@ export const updateSecrets = async (req: Request, res: Response) => {
secretCommentIV,
secretCommentTag,
tags,
folderId
folder
} = secret;
const fullFolderPath = await getFolderPath(folderId)
const fullFolderPath = await getFolderPath(folder)
const updateOperation = {
updateOne: {
@@ -812,6 +813,7 @@ export const updateSecrets = async (req: Request, res: Response) => {
secretValueTag,
tags,
path: fullFolderPath,
folder: folder,
...((
secretCommentCiphertext !== undefined &&
secretCommentIV &&

View File

@@ -5,9 +5,7 @@ import {
validateRequest
} from '../../middleware';
import { body, param } from 'express-validator';
import Folder from '../../models/folder';
import { BadRequestError } from '../../utils/errors';
import { Secret } from '../../models';
import { createFolder, deleteFolder } from '../../controllers/v1/secretsFolderController';
router.post(
'/',
@@ -19,37 +17,7 @@ router.post(
body('folderName').exists(),
body('parentFolderId'),
validateRequest,
async (req: Request, res: Response) => {
const { workspaceId, environment, folderName, parentFolderId } = req.body
if (parentFolderId) {
const parentFolder = await Folder.findById(parentFolderId);
if (!parentFolder) {
throw BadRequestError({ message: "The parent folder doesn't exist" })
}
}
const existingFolder = await Folder.findOne({
name: folderName,
workspace: workspaceId,
environment: environment,
parent: parentFolderId,
});
if (existingFolder) {
return res.json(existingFolder)
}
const newFolder = new Folder({
name: folderName,
workspace: workspaceId,
environment: environment,
parent: parentFolderId,
});
await newFolder.save();
return res.json(newFolder)
}
createFolder
);
router.delete(
@@ -59,30 +27,7 @@ router.delete(
}),
param('folderId').exists(),
validateRequest,
async (req: Request, res: Response) => {
const { folderId } = req.params
const queue: any[] = [folderId];
const folder = await Folder.findById(folderId);
if (!folder) {
throw BadRequestError({ message: "The folder doesn't exist" })
}
while (queue.length > 0) {
const currentFolderId = queue.shift();
const childFolders = await Folder.find({ parent: currentFolderId });
for (const childFolder of childFolders) {
queue.push(childFolder._id);
}
await Secret.deleteMany({ folder: currentFolderId });
await Folder.deleteOne({ _id: currentFolderId });
}
res.send()
}
deleteFolder
);