import { getToken } from "next-auth/jwt"; import { queryOne, run } from "@/lib/db"; export async function POST(request) { try { const token = await getToken({ req: request, secret: process.env.NEXTAUTH_SECRET || "your-fallback-secret-should-be-at-least-32-chars", }); if (!token) { return Response.json({ error: "Unauthorized" }, { status: 401 }); } const userId = token.id; const { name } = await request.json(); if (!name || !name.trim()) { return Response.json({ error: "Team name is required" }, { status: 400 }); } const code = generateTeamCode(); await run(` CREATE TABLE IF NOT EXISTS teams ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, code TEXT UNIQUE NOT NULL, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ) `); const existingTeam = await queryOne("SELECT id FROM teams WHERE name = ?", [ name, ]); if (existingTeam) { return Response.json( { error: "Team name already exists" }, { status: 409 } ); } const result = await run("INSERT INTO teams (name, code) VALUES (?, ?)", [ name, code, ]); const teamId = result.lastID; if (!teamId) { throw new Error("Failed to create team - no ID returned"); } await run("UPDATE users SET team_id = ? WHERE id = ?", [teamId, userId]); return Response.json({ success: true, teamId, message: "Team created successfully", }); } catch (error) { console.error("Error creating team:", error); return Response.json( { error: "Failed to create team: " + error.message }, { status: 500 } ); } } function generateTeamCode() { const characters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; let result = ""; for (let i = 0; i < 6; i++) { result += characters.charAt(Math.floor(Math.random() * characters.length)); } return result; }