import { queryOne, run } from "@/lib/db"; import { getServerSession } from "next-auth/next"; import { authOptions } from "../../auth/[...nextauth]/route"; import { nanoid } from "nanoid"; export async function POST(request) { try { const session = await getServerSession(authOptions); if (!session) { return new Response( JSON.stringify({ success: false, error: "Unauthorised" }), { status: 401 } ); } if (session.user.role === "admin") { return new Response( JSON.stringify({ success: false, error: "Admins cannot create teams" }), { status: 403 } ); } const { name, userId } = await request.json(); if (!name || name.trim() === "") { return new Response( JSON.stringify({ success: false, error: "Team name is required" }), { status: 400 } ); } const teamCode = nanoid(6).toUpperCase(); await run("INSERT INTO teams (name, code) VALUES (?, ?)", [name, teamCode]); const newTeam = await queryOne("SELECT id FROM teams WHERE code = ?", [ teamCode, ]); await run("UPDATE users SET team_id = ? WHERE id = ?", [ newTeam.id, userId, ]); session.user.teamId = newTeam.id; return new Response(JSON.stringify({ success: true, teamId: newTeam.id }), { status: 201, }); } catch (error) { console.error("Team creation error:", error); return new Response( JSON.stringify({ success: false, error: "Failed to create team" }), { status: 500 } ); } }