// /api/team/create/route.ts import { NextResponse, type NextRequest } from 'next/server' import { prisma } from '@/app/lib/prisma' import { sendServerSSEMessage } from '@/app/lib/sse-server-client' export const dynamic = 'force-dynamic' export async function POST(req: NextRequest) { try { const { teamname, leader }: { teamname?: string; leader?: string } = await req.json() if (!teamname?.trim()) { return NextResponse.json({ message: 'Teamname fehlt.' }, { status: 400 }) } const dup = await prisma.team.findFirst({ where: { name: teamname } }) if (dup) { return NextResponse.json({ message: 'Teamname bereits vergeben.' }, { status: 400 }) } const newTeam = await prisma.team.create({ data: { name: teamname, leaderId: leader ?? null, activePlayers: leader ? [leader] : [], inactivePlayers: [], }, }) if (leader) { const user = await prisma.user.findUnique({ where: { steamId: leader } }) if (!user) { await prisma.team.delete({ where: { id: newTeam.id } }) return NextResponse.json({ message: 'Leader-Benutzer nicht gefunden.' }, { status: 404 }) } // user dem Team zuordnen await prisma.user.update({ where: { steamId: leader }, data: { teamId: newTeam.id }, }) // πŸ”” (optional) persistente Notification const note = await prisma.notification.create({ data: { steamId: leader, title: 'Team erstellt', message: `Du hast erfolgreich das Team β€ž${teamname}β€œ erstellt.`, actionType: 'team-created', actionData: newTeam.id, }, }) // ➜ Sofort an Notification-Center await sendServerSSEMessage({ type: 'notification', targetUserIds: [leader], message: note.message, id: note.id, actionType: note.actionType ?? undefined, actionData: note.actionData ?? undefined, createdAt: note.createdAt.toISOString(), }) // βœ… ➜ HIER: Self-Refresh fΓΌr den Ersteller await sendServerSSEMessage({ type: 'self-updated', // <β€” stelle sicher, dass dein Client darauf hΓΆrt targetUserIds: [leader], }) } // (Optional) Broadcasts await sendServerSSEMessage({ type: 'team-created', title: 'Team erstellt', message: `Das Team β€ž${teamname}β€œ wurde erstellt.`, teamId: newTeam.id, }) await sendServerSSEMessage({ type: 'team-updated', teamId: newTeam.id, }) return NextResponse.json( { message: 'Team erstellt', team: newTeam }, { headers: { 'Cache-Control': 'no-store' } }, ) } catch (error: any) { if (error?.code === 'P2002') { return NextResponse.json({ message: 'Teamname bereits vergeben.' }, { status: 400 }) } console.error('❌ Fehler beim Team erstellen:', error) return NextResponse.json({ message: 'Interner Serverfehler.' }, { status: 500 }) } }