// /src/app/api/schedule/route.ts 'use server' import { NextResponse } from 'next/server' import { prisma } from '@/lib/prisma' // Helper: Prisma-User -> Player const toPlayer = (u: any) => ({ steamId : u?.steamId ?? '', name : u?.name ?? 'Unbekannt', avatar : u?.avatar ?? null, location : u?.location ?? undefined, premierRank: u?.premierRank ?? undefined, isAdmin : u?.isAdmin ?? undefined, }) // Helper: Prisma-MatchPlayer -> MatchPlayer const toMatchPlayer = (p: any) => ({ user : toPlayer(p.user), stats: p.stats ?? undefined, }) export async function GET() { try { const matches = await prisma.match.findMany({ where : { matchType: 'community' }, orderBy: { demoDate: 'desc' }, include: { teamA: { include: { leader: true }, }, teamB: { include: { leader: true }, }, players: { include: { user : true, stats: true, team : true, }, }, }, }) const formatted = matches.map(m => { const matchDate = m.demoDate ?? // @ts-ignore – falls du optional noch ein „date“-Feld hast (m as any).date ?? m.createdAt const teamAId = m.teamA?.id ?? null const teamBId = m.teamB?.id ?? null const teamAPlayers = m.players .filter(p => (p.teamId ?? p.team?.id) === teamAId) .map(toMatchPlayer) const teamBPlayers = m.players .filter(p => (p.teamId ?? p.team?.id) === teamBId) .map(toMatchPlayer) return { id : m.id, title : m.title, map : m.map ?? null, matchType : 'community', matchDate : matchDate.toISOString(), scoreA : m.scoreA, scoreB : m.scoreB, winnerTeam: m.winnerTeam ?? null, teamA: { id : m.teamA?.id ?? null, name : m.teamA?.name ?? 'CT', logo : m.teamA?.logo ?? null, score : m.scoreA, leader : m.teamA?.leader ? toPlayer(m.teamA.leader) : undefined, // -> neu: players: teamAPlayers, }, teamB: { id : m.teamB?.id ?? null, name : m.teamB?.name ?? 'T', logo : m.teamB?.logo ?? null, score : m.scoreB, leader : m.teamB?.leader ? toPlayer(m.teamB.leader) : undefined, // -> neu: players: teamBPlayers, }, // -> Top-Level "players" wurde entfernt } }) return NextResponse.json({ matches: formatted }) } catch (err) { console.error('❌ Fehler beim Abrufen der Community-Matches:', err) return NextResponse.json( { error: 'Serverfehler beim Laden der Community-Matches' }, { status: 500 }, ) } }