Skip to content

Commit 7526a12

Browse files
authored
Merge pull request #3105 from processing/release-delete-sketch
Fix deleting sketches
2 parents 6ca140e + 7bce0ed commit 7526a12

File tree

3 files changed

+27
-25
lines changed

3 files changed

+27
-25
lines changed

server/controllers/aws.controller.js

Lines changed: 25 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -39,25 +39,37 @@ export function getObjectKey(url) {
3939
}
4040
return objectKey;
4141
}
42-
// TODO: callback should be removed
42+
// TODO: callbacks should be removed from deleteObjectsFromS3 and deleteObjectFromS3
4343
export async function deleteObjectsFromS3(keyList, callback) {
4444
const objectsToDelete = keyList?.map((key) => ({ Key: key }));
4545

46-
if (!objectsToDelete.length) {
47-
callback?.();
48-
return;
49-
}
46+
const sendResponse = (cb, err) => {
47+
if (cb && err) {
48+
callback(err);
49+
} else if (cb) {
50+
callback();
51+
} else if (!cb && err) {
52+
console.error('Failed to delete objects from S3.');
53+
throw err;
54+
}
5055

51-
const params = {
52-
Bucket: process.env.S3_BUCKET,
53-
Delete: { Objects: objectsToDelete }
56+
return 'Objects successfully deleted from S3.';
5457
};
5558

56-
try {
57-
const deleteResult = await s3Client.send(new DeleteObjectsCommand(params));
58-
callback?.(null, deleteResult);
59-
} catch (error) {
60-
callback?.(error);
59+
if (objectsToDelete.length > 0) {
60+
const params = {
61+
Bucket: process.env.S3_BUCKET,
62+
Delete: { Objects: objectsToDelete }
63+
};
64+
65+
try {
66+
await s3Client.send(new DeleteObjectsCommand(params));
67+
sendResponse();
68+
} catch (error) {
69+
sendResponse();
70+
}
71+
} else {
72+
sendResponse();
6173
}
6274
}
6375

server/controllers/project.controller/__test__/deleteProject.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,8 +74,8 @@ describe('project.controller', () => {
7474

7575
await deleteProject(request, response);
7676

77-
expect(response.status).toHaveBeenCalledWith(200);
7877
expect(deleteObjectsFromS3).toHaveBeenCalled();
7978
expect(project.remove).toHaveBeenCalled();
79+
expect(response.status).toHaveBeenCalledWith(200);
8080
});
8181
});

server/controllers/project.controller/deleteProject.js

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -56,17 +56,7 @@ export default async function deleteProject(req, res) {
5656
return;
5757
}
5858

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-
}
69-
59+
await deleteFilesFromS3(project.files);
7060
await project.remove();
7161
res.status(200).end();
7262
} catch (error) {

0 commit comments

Comments
 (0)