57 lines
1.4 KiB
TypeScript
57 lines
1.4 KiB
TypeScript
import { NextRequest, NextResponse } from 'next/server'
|
|
import { prisma } from '@/app/lib/prisma'
|
|
|
|
export async function GET(req: NextRequest) {
|
|
const teamId = req.nextUrl.searchParams.get('id')
|
|
|
|
if (!teamId) {
|
|
return NextResponse.json({ message: 'Team-ID fehlt.' }, { status: 400 })
|
|
}
|
|
|
|
try {
|
|
const team = await prisma.team.findUnique({
|
|
where: { id: teamId },
|
|
include: {
|
|
leader: {
|
|
select: {
|
|
steamId: true,
|
|
name: true,
|
|
avatar: true,
|
|
location: true,
|
|
},
|
|
},
|
|
},
|
|
})
|
|
|
|
if (!team) {
|
|
return NextResponse.json({ message: 'Team nicht gefunden.' }, { status: 404 })
|
|
}
|
|
|
|
const steamIds = [...team.activePlayers, ...team.inactivePlayers]
|
|
|
|
const players = await prisma.user.findMany({
|
|
where: { steamId: { in: steamIds } },
|
|
select: {
|
|
steamId: true,
|
|
name: true,
|
|
avatar: true,
|
|
location: true,
|
|
},
|
|
})
|
|
|
|
return NextResponse.json({
|
|
team: {
|
|
id: team.id,
|
|
teamname: team.name,
|
|
logo: team.logo,
|
|
leader: team.leader,
|
|
activePlayers: players.filter(p => team.activePlayers.includes(p.steamId)),
|
|
inactivePlayers: players.filter(p => team.inactivePlayers.includes(p.steamId)),
|
|
},
|
|
})
|
|
} catch (err) {
|
|
console.error('[GET /api/team/get] Fehler:', err)
|
|
return NextResponse.json({ message: 'Interner Serverfehler' }, { status: 500 })
|
|
}
|
|
}
|