dcrey7's picture
Upload 522 files
811126d verified
import { NextRequest, NextResponse } from "next/server";
import prisma from "@/lib/prisma";
export async function GET(
request: NextRequest,
context: { params: { inviteCode: string } }
) {
try {
const { inviteCode } = await context.params;
// Récupérer le groupe avec ses membres et leurs informations utilisateur
const group = await prisma.group.findUnique({
where: { inviteCode },
include: {
players: {
include: {
user: {
select: {
id: true,
name: true,
avatar: true,
},
},
},
},
},
});
if (!group) {
return NextResponse.json({ error: "Groupe non trouvé" }, { status: 404 });
}
// Formater la réponse pour le frontend
return NextResponse.json({
id: group.id,
name: group.name,
inviteCode: group.inviteCode,
status: group.status,
createdAt: group.createdAt,
players: group.players.map((player) => ({
id: player.userId,
name: player.user.name,
avatar: player.user.avatar,
isReady: player.isReady,
})),
});
} catch (error: any) {
console.error("Erreur lors de la récupération du groupe:", error);
return NextResponse.json(
{
error: "Erreur serveur",
details: error.message,
},
{ status: 500 }
);
}
}
export async function POST(
request: NextRequest,
context: { params: { inviteCode: string } }
) {
try {
const { inviteCode } = await context.params;
// Mettre à jour le statut du groupe
const updatedGroup = await prisma.group.update({
where: { inviteCode },
data: { status: "PLAYING" },
include: {
players: {
include: {
user: {
select: {
id: true,
name: true,
},
},
},
},
},
});
// Formater la réponse pour le frontend
return NextResponse.json({
...updatedGroup,
players: updatedGroup.players.map((player) => ({
id: player.userId,
name: player.user.name,
isReady: player.isReady,
})),
});
} catch (error) {
console.error("Erreur lors du démarrage de la partie:", error);
return NextResponse.json({ error: "Erreur serveur" }, { status: 500 });
}
}