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 - +
Team