@@ -85,28 +85,35 @@ router.put('/:id', async (req: Request, res: Response): Promise<void> => {
8585router . 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+
112119module . exports = router
0 commit comments