diff --git a/web/prisma/schema.prisma b/web/prisma/schema.prisma index 7f26330..08338b2 100644 --- a/web/prisma/schema.prisma +++ b/web/prisma/schema.prisma @@ -8,10 +8,10 @@ datasource db { } model User { - id Int @id @default(autoincrement()) - username String @unique - password String - Submission Session[] + id Int @id @default(autoincrement()) + username String @unique + password String + sessions Session[] } model Session { @@ -47,7 +47,7 @@ model Problem { sampleOutput String realInput String realOutput String - Submission Submission[] + submissions Submission[] contests Contest[] @relation("ProblemContestRelation") } @@ -66,11 +66,14 @@ model ActiveTeam { team Team @relation(fields: [teamId], references: [id]) sessionToken String? @unique sessionCreatedAt DateTime? + contestId Int + contest Contest @relation(fields: [contestId], references: [id]) } model Contest { - id Int @id @default(autoincrement()) - name String - teams Team[] @relation("TeamContestRelation") - problems Problem[] @relation("ProblemContestRelation") + id Int @id @default(autoincrement()) + name String + teams Team[] @relation("TeamContestRelation") + problems Problem[] @relation("ProblemContestRelation") + activeTeams ActiveTeam[] } diff --git a/web/src/routes/api/team/[session]/+server.ts b/web/src/routes/api/team/[session]/+server.ts new file mode 100644 index 0000000..f1e18d6 --- /dev/null +++ b/web/src/routes/api/team/[session]/+server.ts @@ -0,0 +1,20 @@ +import type { RequestHandler } from './$types'; +import { error, json } from '@sveltejs/kit'; +import { db } from '$lib/server/prisma'; + +export const GET = (async ({ params }) => { + const session = params.session; + const activeTeam = await db.activeTeam.findUnique({ + where: { sessionToken: session } + }); + if (!activeTeam) { + return json({ success: false }); + } + return json({ + success: true, + data: { + teamId: activeTeam.teamId, + contestId: activeTeam.contestId + } + }); +}) satisfies RequestHandler;