@@ -85,28 +85,35 @@ router.put('/:id', async (req: Request, res: Response): Promise<void> => {
85
85
router . delete ( '/:id' , async ( req : Request , res : Response ) : Promise < void > => {
86
86
87
87
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 )
105
91
} catch ( error : unknown ) {
106
92
const response : ApiResponse = ApiResponse . error ( ( error as Error ) . message )
107
93
res . status ( 500 ) . json ( response )
108
94
}
109
95
110
96
} )
111
97
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
+
112
119
module . exports = router
0 commit comments