Skip to content

Commit a7d1e6a

Browse files
committed
chore: proper error handling in stale.post.ts
1 parent f4872a6 commit a7d1e6a

File tree

1 file changed

+52
-18
lines changed

1 file changed

+52
-18
lines changed

packages/app/server/routes/rm/stale.post.ts

Lines changed: 52 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,63 @@
11
import type { H3Event } from "h3";
22

33
export default eventHandler(async (event) => {
4-
const rmStaleKeyHeader = getHeader(event, "sb-rm-stale-key");
5-
const signal = toWebRequest(event).signal;
6-
const { rmStaleKey } = useRuntimeConfig(event);
4+
try {
5+
const rmStaleKeyHeader = getHeader(event, "sb-rm-stale-key");
6+
const signal = toWebRequest(event).signal;
7+
const { rmStaleKey } = useRuntimeConfig(event);
78

8-
if (rmStaleKeyHeader !== rmStaleKey) {
9-
throw createError({
10-
status: 403,
11-
});
12-
}
9+
if (rmStaleKeyHeader !== rmStaleKey) {
10+
throw createError({
11+
status: 403,
12+
});
13+
}
1314

14-
const { bucket, cursor, remove } = await readBody<{ bucket: 'packages' | 'templates'; cursor: string | null; remove: boolean }>(event);
15+
const { bucket, cursor, remove } = await readBody<{ bucket: 'packages' | 'templates'; cursor: string | null; remove: boolean }>(event);
1516

16-
const result = await iterateAndDelete(event, signal, {
17-
prefix: bucket === 'packages' ? usePackagesBucket.base : useTemplatesBucket.base,
18-
limit: 1000,
19-
cursor: cursor || undefined,
20-
}, remove);
17+
try {
18+
const result = await iterateAndDelete(event, signal, {
19+
prefix: bucket === 'packages' ? usePackagesBucket.base : useTemplatesBucket.base,
20+
limit: 1000,
21+
cursor: cursor || undefined,
22+
}, remove);
2123

22-
setResponseHeader(event, "Content-Type", "application/json");
24+
setResponseHeader(event, "Content-Type", "application/json");
2325

24-
return {
25-
result,
26-
};
26+
return {
27+
result,
28+
};
29+
} catch (err: any) {
30+
// Log error with context
31+
console.error('[rm/stale] Error in iterateAndDelete', {
32+
bucket,
33+
cursor,
34+
remove,
35+
error: err && err.stack ? err.stack : err,
36+
});
37+
throw createError({
38+
status: 500,
39+
statusMessage: 'Internal Server Error',
40+
data: {
41+
message: err && err.message ? err.message : String(err),
42+
stack: err && err.stack ? err.stack : undefined,
43+
bucket,
44+
cursor,
45+
remove,
46+
},
47+
});
48+
}
49+
} catch (outerErr: any) {
50+
// Log any error at the outer handler level
51+
console.error('[rm/stale] Handler error', outerErr && outerErr.stack ? outerErr.stack : outerErr);
52+
throw createError({
53+
status: 500,
54+
statusMessage: 'Internal Server Error',
55+
data: {
56+
message: outerErr && outerErr.message ? outerErr.message : String(outerErr),
57+
stack: outerErr && outerErr.stack ? outerErr.stack : undefined,
58+
},
59+
});
60+
}
2761
});
2862

2963
// Helper for concurrency limiting

0 commit comments

Comments
 (0)