|
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; |
|
|
|
|
|
if (!name || !userId) { |
|
console.log("Champs manquants:", { name, userId }); |
|
return NextResponse.json( |
|
{ error: "Nom du groupe et ID utilisateur requis" }, |
|
{ status: 400 } |
|
); |
|
} |
|
|
|
|
|
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 } |
|
); |
|
} |
|
|
|
|
|
const inviteCode = nanoid(9); |
|
console.log("Code d'invitation généré:", inviteCode); |
|
|
|
try { |
|
|
|
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 } |
|
); |
|
} |
|
} |
|
|