@@ -7,45 +7,42 @@ const ProjectDeletionError = createApplicationErrorClass(
77 'ProjectDeletionError'
88) ;
99
10- function deleteFilesFromS3 ( files ) {
11- deleteObjectsFromS3 (
12- files
13- . filter ( ( file ) => {
14- if (
15- file . url &&
10+ async function deleteFilesFromS3 ( files ) {
11+ const filteredFiles = files
12+ . filter ( ( file ) => {
13+ const isValidFile =
14+ ( file . url &&
1615 ( file . url . includes ( process . env . S3_BUCKET_URL_BASE ) ||
17- file . url . includes ( process . env . S3_BUCKET ) )
18- ) {
19- if (
20- ! process . env . S3_DATE ||
21- ( process . env . S3_DATE &&
22- isBefore ( new Date ( process . env . S3_DATE ) , new Date ( file . createdAt ) ) )
23- ) {
24- return true ;
25- }
26- }
27- return false ;
28- } )
29- . map ( ( file ) => getObjectKey ( file . url ) )
30- ) ;
16+ file . url . includes ( process . env . S3_BUCKET ) ) &&
17+ ! process . env . S3_DATE ) ||
18+ ( process . env . S3_DATE &&
19+ isBefore ( new Date ( process . env . S3_DATE ) , new Date ( file . createdAt ) ) ) ;
20+
21+ return isValidFile ;
22+ } )
23+ . map ( ( file ) => getObjectKey ( file . url ) ) ;
24+
25+ try {
26+ await deleteObjectsFromS3 ( filteredFiles ) ;
27+ } catch ( error ) {
28+ console . error ( 'Failed to delete files from S3:' , error ) ;
29+ }
3130}
3231
33- export default function deleteProject ( req , res ) {
34- function sendFailure ( error ) {
32+ export default async function deleteProject ( req , res ) {
33+ const sendFailure = ( error ) => {
3534 res . status ( error . code ) . json ( { message : error . message } ) ;
36- }
35+ } ;
3736
38- function sendProjectNotFound ( ) {
39- sendFailure (
40- new ProjectDeletionError ( 'Project with that id does not exist' , {
41- code : 404
42- } )
43- ) ;
44- }
37+ try {
38+ const project = await Project . findById ( req . params . project_id ) ;
4539
46- function handleProjectDeletion ( project ) {
47- if ( project == null ) {
48- sendProjectNotFound ( ) ;
40+ if ( ! project ) {
41+ sendFailure (
42+ new ProjectDeletionError ( 'Project with that id does not exist' , {
43+ code : 404
44+ } )
45+ ) ;
4946 return ;
5047 }
5148
@@ -59,19 +56,20 @@ export default function deleteProject(req, res) {
5956 return ;
6057 }
6158
62- deleteFilesFromS3 ( project . files ) ;
63-
64- project . remove ( ( removeProjectError ) => {
65- if ( removeProjectError ) {
66- sendProjectNotFound ( ) ;
67- return ;
68- }
59+ try {
60+ await deleteFilesFromS3 ( project . files ) ;
61+ } catch ( error ) {
62+ sendFailure (
63+ new ProjectDeletionError ( 'Failed to delete associated project files.' , {
64+ code : 500
65+ } )
66+ ) ;
67+ return ;
68+ }
6969
70- res . status ( 200 ) . end ( ) ;
71- } ) ;
70+ await project . remove ( ) ;
71+ res . status ( 200 ) . end ( ) ;
72+ } catch ( error ) {
73+ sendFailure ( error ) ;
7274 }
73-
74- return Project . findById ( req . params . project_id )
75- . then ( handleProjectDeletion )
76- . catch ( sendFailure ) ;
7775}
0 commit comments