diff --git a/web/src/routes/admin/problems/[problemId]/+page.svelte b/web/src/routes/admin/problems/[problemId]/+page.svelte
index ae8c9e8..b00588e 100644
--- a/web/src/routes/admin/problems/[problemId]/+page.svelte
+++ b/web/src/routes/admin/problems/[problemId]/+page.svelte
@@ -4,6 +4,7 @@
import type { Actions, PageData } from './$types';
let editing = false;
+ let error = false;
export let data: PageData;
export let form: Actions;
@@ -21,11 +22,20 @@
const data = await res.json();
if (data.success) {
goto('/admin/problems');
+ } else {
+ error = true;
}
}
{data.problemData.friendlyName}
+
+{#if error}
+
+ Error deleting problem (Is it being used in any submissions?)
+
+{/if}
+
Back
diff --git a/web/src/routes/admin/problems/[problemId]/+server.ts b/web/src/routes/admin/problems/[problemId]/+server.ts
index 41f2838..c722ea5 100644
--- a/web/src/routes/admin/problems/[problemId]/+server.ts
+++ b/web/src/routes/admin/problems/[problemId]/+server.ts
@@ -7,6 +7,10 @@ export const DELETE = (async ({ params }) => {
if (isNaN(problemId)) {
throw error(400, 'Invalid problem');
}
- await db.problem.delete({ where: { id: problemId } });
+ try {
+ await db.problem.delete({ where: { id: problemId } });
+ } catch {
+ return json({ success: false });
+ }
return json({ success: true });
}) satisfies RequestHandler;
diff --git a/web/src/routes/admin/submissions/[submissionId]/+page.svelte b/web/src/routes/admin/submissions/[submissionId]/+page.svelte
index 4a5a74c..4c39039 100644
--- a/web/src/routes/admin/submissions/[submissionId]/+page.svelte
+++ b/web/src/routes/admin/submissions/[submissionId]/+page.svelte
@@ -29,7 +29,7 @@
All Submissions
-