Skip to content

Commit 626c2c1

Browse files
author
Chahat Gupta
committed
Fixed delete folder api by adding recursive deletion
1 parent 92e91bc commit 626c2c1

File tree

1 file changed

+24
-17
lines changed

1 file changed

+24
-17
lines changed

src/routes/mock_folder.routes.ts

+24-17
Original file line numberDiff line numberDiff line change
@@ -85,28 +85,35 @@ router.put('/:id', async (req: Request, res: Response): Promise<void> => {
8585
router.delete('/:id', async (req: Request, res: Response): Promise<void> => {
8686

8787
try {
88-
MockFolder.findByIdAndDelete(req.params.id, null, (deleteError: mongoose.CallbackError) => {
89-
if (deleteError) {
90-
const response: ApiResponse = ApiResponse.error((deleteError as Error).message)
91-
res.status(500).json(response)
92-
} else {
93-
// also delete mocks associated to that folder
94-
Mock.deleteMany({ parentId: req.params.id }, (deleteError: mongoose.CallbackError) => {
95-
if (deleteError) {
96-
const response: ApiResponse = ApiResponse.error((deleteError as Error).message)
97-
res.status(500).json(response)
98-
} else {
99-
const response: ApiResponse = ApiResponse.success(null, `Document with id ${req.params.id} removed`)
100-
res.status(200).json(response)
101-
}
102-
})
103-
}
104-
})
88+
await deleteChildren(req.params.id)
89+
const response: ApiResponse = ApiResponse.success(null, `Document with id ${req.params.id} removed`)
90+
res.status(200).json(response)
10591
} catch (error: unknown) {
10692
const response: ApiResponse = ApiResponse.error((error as Error).message)
10793
res.status(500).json(response)
10894
}
10995

11096
})
11197

98+
async function deleteChildren(folderId: string): Promise<void> {
99+
100+
// deleting folder
101+
await MockFolder.findByIdAndDelete(folderId)
102+
103+
// deleting child files
104+
await Mock.deleteMany({ parentId: folderId })
105+
106+
// getting child folders
107+
const childFolders: MockFolderModel[] = await MockFolder.find({ parentId: folderId })
108+
109+
// deleting child folders
110+
await MockFolder.deleteMany({ parentId: folderId })
111+
112+
// recursively deleting children folder contents
113+
for (const childFolder of childFolders) {
114+
await deleteChildren(childFolder._id);
115+
}
116+
117+
}
118+
112119
module.exports = router

0 commit comments

Comments
 (0)