23 lines
995 B
TypeScript
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 });
|
|
}
|
|
}
|