import { NextRequest, NextResponse } from "next/server"; import prisma from "@/lib/prisma"; import { nanoid } from "nanoid"; export async function POST(request: NextRequest) { try { console.log("Début de la création du groupe"); const body = await request.json(); console.log("Body reçu:", body); const { name, userId } = body; // Vérifier que les champs requis sont présents if (!name || !userId) { console.log("Champs manquants:", { name, userId }); return NextResponse.json( { error: "Nom du groupe et ID utilisateur requis" }, { status: 400 } ); } // Vérifier que l'utilisateur existe console.log("Recherche de l'utilisateur:", userId); const user = await prisma.user.findUnique({ where: { id: parseInt(userId) }, }); if (!user) { console.log("Utilisateur non trouvé:", userId); return NextResponse.json( { error: "Utilisateur non trouvé" }, { status: 404 } ); } // Créer un code d'invitation unique const inviteCode = nanoid(9); console.log("Code d'invitation généré:", inviteCode); try { // Créer le groupe avec l'utilisateur existant console.log("Création du groupe..."); const group = await prisma.group.create({ data: { name, inviteCode, creatorId: parseInt(userId), players: { create: { userId: parseInt(userId), isReady: false, }, }, }, include: { players: { include: { user: true, }, }, }, }); console.log("Groupe créé:", group); const response = { id: group.id, name: group.name, inviteCode: group.inviteCode, createdAt: group.createdAt, players: group.players.map((player) => ({ id: player.userId, name: player.user.name, isReady: player.isReady, })), }; console.log("Réponse préparée:", response); return NextResponse.json(response); } catch (dbError: any) { console.error("Erreur Prisma:", dbError); return NextResponse.json( { error: "Erreur lors de la création du groupe", details: dbError.message, }, { status: 500 } ); } } catch (error: any) { console.error("Erreur lors du parsing de la requête:", error); return NextResponse.json( { error: "Erreur serveur", details: error.message, }, { status: 500 } ); } }