Study/src/app/api/classes/route.ts

23 lines
995 B
TypeScript

import { NextRequest, NextResponse } from "next/server";
import * as classService from "@/services/classService";
import { classCreateSchema, isPrismaError } from "@/lib/validation/contentSchemas";
export async function GET() {
return NextResponse.json(await classService.listClasses());
}
export async function POST(request: NextRequest) {
const parsed = classCreateSchema.safeParse(await request.json().catch(() => null));
if (!parsed.success) {
return NextResponse.json({ error: "Class name is required and must be 160 characters or fewer" }, { status: 400 });
}
try {
return NextResponse.json(await classService.createClass(parsed.data.name), { status: 201 });
} catch (error) {
if (isPrismaError(error, "P2002")) {
return NextResponse.json({ error: "A class with that slug already exists" }, { status: 409 });
}
console.error("Failed to create class", error);
return NextResponse.json({ error: "Failed to create class" }, { status: 500 });
}
}