import { NextRequest, NextResponse } from 'next/server'
import { query } from '@/lib/db'
import { hashPassword } from '@/lib/auth'

// Cria o primeiro gestor se não existir nenhum usuário.
// Acesse UMA VEZ após o deploy inicial: POST /api/auth/setup { nome, email, senha }
export async function POST(req: NextRequest) {
  const [{ count }] = await query<{ count: string }>(`SELECT COUNT(*) AS count FROM usuarios`)
  if (parseInt(count) > 0) {
    return NextResponse.json({ error: 'Setup já realizado' }, { status: 403 })
  }

  const { nome, email, senha } = await req.json() as { nome: string; email: string; senha: string }
  if (!nome || !email || !senha || senha.length < 6) {
    return NextResponse.json({ error: 'nome, email e senha (≥6 chars) são obrigatórios' }, { status: 400 })
  }

  const hash = hashPassword(senha)
  const [user] = await query<{ id: number }>(
    `INSERT INTO usuarios (nome, email, senha_hash, role) VALUES ($1, $2, $3, 'gestor') RETURNING id`,
    [nome.trim(), email.trim().toLowerCase(), hash],
  )

  return NextResponse.json({ ok: true, id: user.id, msg: 'Gestor criado com sucesso. Faça login.' })
}
