Skip to content

Commit f48253d

Browse files
committed
update errors for aws controller
1 parent 12adbd4 commit f48253d

File tree

1 file changed

+41
-39
lines changed

1 file changed

+41
-39
lines changed

server/controllers/aws.controller.js

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

4646
if (objectsToDelete.length > 0) {
@@ -51,33 +51,27 @@ export async function deleteObjectsFromS3(keyList, callback) {
5151

5252
try {
5353
await s3Client.send(new DeleteObjectsCommand(params));
54-
if (callback) {
55-
callback();
56-
}
5754
} catch (error) {
58-
console.error('Error deleting objects from S3: ', error);
59-
if (callback) {
60-
callback(error);
55+
if (error.name === 'NotFound') {
56+
console.log('Object does not exist:', error);
57+
} else {
58+
console.error('Error deleting objects from S3: ', error);
6159
}
6260
}
63-
} else if (callback) {
64-
callback();
6561
}
6662
}
6763

68-
export function deleteObjectFromS3(req, res) {
64+
export async function deleteObjectFromS3(req, res) {
6965
const { objectKey, userId } = req.params;
7066
const fullObjectKey = userId ? `${userId}/${objectKey}` : objectKey;
7167

72-
deleteObjectsFromS3([fullObjectKey], (error, result) => {
73-
if (error) {
74-
return res
75-
.status(500)
76-
.json({ error: 'Failed to delete object from s3.' });
77-
}
68+
try {
69+
await deleteObjectsFromS3([fullObjectKey]);
7870

7971
return res.json({ success: true, message: 'Object deleted successfully.' });
80-
});
72+
} catch (err) {
73+
return res.status(500).json({ error: 'Failed to delete object from s3.' });
74+
}
8175
}
8276

8377
export function signS3(req, res) {
@@ -116,8 +110,12 @@ export async function copyObjectInS3(url, userId) {
116110
try {
117111
await s3Client.send(new HeadObjectCommand(headParams));
118112
} catch (error) {
119-
console.error('Error fetching object metadata: ', error);
120-
throw error;
113+
if (error.name === 'NotFound') {
114+
console.log('Object does not exist:', error);
115+
} else {
116+
console.error('Error fetching object metadata:', error);
117+
throw error;
118+
}
121119
}
122120

123121
const params = {
@@ -131,7 +129,12 @@ export async function copyObjectInS3(url, userId) {
131129
await s3Client.send(new CopyObjectCommand(params));
132130
return `${s3Bucket}${userId}/${newFilename}`;
133131
} catch (error) {
134-
console.error('Error copying object in S3:', error);
132+
// temporary error handling for sketches with missing assets
133+
if (error.startsWith('TypeError')) {
134+
console.log('Object does not exist:', error);
135+
return null;
136+
}
137+
console.error('Error copying object:', error);
135138
throw error;
136139
}
137140
}
@@ -224,31 +227,30 @@ export async function listObjectsInS3ForUser(userId) {
224227

225228
return { assets: projectAssets, totalSize };
226229
} catch (error) {
227-
console.log('Got an error:', error);
230+
if (error.name === 'NotFound') {
231+
console.log('Object does not exist:', error);
232+
return null;
233+
}
234+
console.error('Got an error: ', error);
228235
throw error;
229236
}
230237
}
231238

232-
export function listObjectsInS3ForUserRequestHandler(req, res) {
239+
export async function listObjectsInS3ForUserRequestHandler(req, res) {
233240
const { username } = req.user;
234-
User.findByUsername(username, (err, user) => {
235-
if (err) {
236-
console.error('Error fetching user:', err.message);
237-
res.status(500).json({ error: 'Failed to fetch user' });
238-
return;
239-
}
241+
242+
try {
243+
const user = await User.findByUsername(username);
244+
240245
if (!user) {
241246
res.status(404).json({ error: 'User not found' });
242247
return;
243248
}
244-
const userId = user.id;
245-
listObjectsInS3ForUser(userId)
246-
.then((objects) => {
247-
res.json(objects);
248-
})
249-
.catch((error) => {
250-
console.error('Error listing objects in S3:', error.message);
251-
res.status(500).json({ error: 'Failed to list objects in S3' });
252-
});
253-
});
249+
250+
const objects = await listObjectsInS3ForUser(user.id);
251+
res.json(objects);
252+
} catch (error) {
253+
console.error('Error listing objects in S3:', error.message);
254+
res.status(500).json({ error: 'Failed to list objects in S3' });
255+
}
254256
}

0 commit comments

Comments
 (0)