import { NextRequest, NextResponse } from "next/server"; import * as quizService from "@/services/quizService"; import { quizImportRequestSchema } from "@/lib/validation/importSchemas"; import { readLimitedJson, RequestTooLargeError } from "@/lib/limitedJson"; export async function POST(request: NextRequest) { let body: unknown; try { body = await readLimitedJson(request); } catch (error) { if (error instanceof RequestTooLargeError) { return NextResponse.json({ error: error.message }, { status: 413 }); } throw error; } const parsed = quizImportRequestSchema.safeParse(body); if (!parsed.success) { return NextResponse.json( { error: "Invalid quiz import. SATA questions need at least two correct options.", details: parsed.error.issues, }, { status: 400 } ); } try { const quiz = await quizService.createQuizSetFromImport( parsed.data.classId, parsed.data.data, parsed.data.name, parsed.data.groupId ?? null ); return NextResponse.json(quiz, { status: 201 }); } catch (error) { if (error instanceof quizService.QuizContentValidationError) { return NextResponse.json({ error: error.message }, { status: error.status }); } console.error("Failed to create quiz", error); return NextResponse.json({ error: "Failed to create quiz" }, { status: 500 }); } }