42 lines
1010 B
TypeScript
42 lines
1010 B
TypeScript
// app/api/user-groups/route.ts
|
|
import { NextResponse } from 'next/server';
|
|
import { prisma } from '@/lib/prisma';
|
|
|
|
export async function POST(req: Request) {
|
|
try {
|
|
const { name } = await req.json();
|
|
|
|
if (!name || typeof name !== 'string') {
|
|
return NextResponse.json(
|
|
{ error: 'Gruppenname ist erforderlich.' },
|
|
{ status: 400 },
|
|
);
|
|
}
|
|
|
|
const trimmed = name.trim();
|
|
if (!trimmed) {
|
|
return NextResponse.json(
|
|
{ error: 'Gruppenname darf nicht leer sein.' },
|
|
{ status: 400 },
|
|
);
|
|
}
|
|
|
|
const group = await prisma.userGroup.upsert({
|
|
where: { name: trimmed },
|
|
update: {},
|
|
create: { name: trimmed },
|
|
});
|
|
|
|
return NextResponse.json(
|
|
{ id: group.id, name: group.name },
|
|
{ status: 200 },
|
|
);
|
|
} catch (err) {
|
|
console.error('[POST /api/user-groups]', err);
|
|
return NextResponse.json(
|
|
{ error: 'Interner Serverfehler beim Anlegen der User-Gruppe.' },
|
|
{ status: 500 },
|
|
);
|
|
}
|
|
}
|