Files
dev-run/src/app/api/run/route.ts
T

63 lines
1.6 KiB
TypeScript

import { NextRequest, NextResponse } from "next/server";
import { createClient } from "@/lib/supabase/server";
import * as Core from "@/modules/live-run/core";
import { getSession } from "@/modules/account/core";
import { randomUUID } from "crypto";
export async function PUT(req: NextRequest) {
const { problem, category } = await req.json();
if (!problem || !category)
return NextResponse.json(
{ error: "body requires problem and category" },
{ status: 400 },
);
const supabase = await createClient();
const session = await getSession(supabase);
if (!session)
return NextResponse.json({ error: "Invalid session" }, { status: 401 });
const runId = randomUUID();
await Core.addLiveRun({
problem,
category,
id: runId,
username: session[1].username,
views: 0,
start: new Date().getTime(),
runsCount: 0,
});
return NextResponse.json({ ok: true, runId });
}
export async function POST(req: NextRequest) {
const { runId } = await req.json();
if (!runId)
return NextResponse.json({ error: "body requires runId" }, { status: 400 });
const supabase = await createClient();
const session = await getSession(supabase);
if (!session)
return NextResponse.json({ error: "Invalid session" }, { status: 401 });
const liveRun = await Core.getLiveRun(runId);
if (!liveRun)
return NextResponse.json(
{ error: "Run is not live or does not exist" },
{ status: 401 },
);
const run = await Core.submitRun(supabase, liveRun, session[0].id);
return NextResponse.json({ ok: true, run });
}