diff --git a/web/src/lib/server/gitserver.ts b/web/src/lib/server/gitserver.ts index 0bb7761..7328b74 100644 --- a/web/src/lib/server/gitserver.ts +++ b/web/src/lib/server/gitserver.ts @@ -4,6 +4,8 @@ import { join } from 'path'; let gitRunning = false; +export let repos: Git; + export function startGitServer() { if (!gitRunning) { const port = @@ -16,7 +18,7 @@ export function startGitServer() { } const repoDir = process.env.GIT_REPO_DIR; - const repos = new Git(join(repoDir), { + repos = new Git(join(repoDir), { autoCreate: false, authenticate: ({ type, user, repo }, next) => { if (type == 'push') { diff --git a/web/src/routes/admin/contests/[contestId]/+page.server.ts b/web/src/routes/admin/contests/[contestId]/+page.server.ts index 3445ba7..f89c6ec 100644 --- a/web/src/routes/admin/contests/[contestId]/+page.server.ts +++ b/web/src/routes/admin/contests/[contestId]/+page.server.ts @@ -1,4 +1,4 @@ -import { error, redirect } from '@sveltejs/kit'; +import { error, redirect, type Actions } from '@sveltejs/kit'; import type { PageServerLoad } from './$types'; import { db } from '$lib/server/prisma'; @@ -24,3 +24,17 @@ export const load = (async ({ params }) => { }) }; }) satisfies PageServerLoad; + +export const actions = { + delete: async ({ params }) => { + if (!params.contestId) { + return { success: false }; + } + try { + await db.contest.delete({ where: { id: parseInt(params.contestId) } }); + } catch { + return { success: false }; + } + throw redirect(302, '/admin/contests'); + } +} satisfies Actions; diff --git a/web/src/routes/admin/contests/[contestId]/+page.svelte b/web/src/routes/admin/contests/[contestId]/+page.svelte index e7bf3b0..8a4fb63 100644 --- a/web/src/routes/admin/contests/[contestId]/+page.svelte +++ b/web/src/routes/admin/contests/[contestId]/+page.svelte @@ -1,4 +1,5 @@