/**
 * Cria um usuário do painel (seed do primeiro admin, p.ex.).
 *
 * Uso:
 *   npm run create-user -- "Nome Completo" email@dominio.com "senhaForte" admin
 *
 * Papel (último arg) é opcional: admin | operator (padrão: operator).
 */
import { createUser } from "../src/auth/users.js";
import { findByEmail } from "../src/auth/users.js";
import { closePool } from "../src/db/mysql.js";

async function main(): Promise<void> {
  const [name, email, password, role] = process.argv.slice(2);
  if (!name || !email || !password) {
    console.error('Uso: npm run create-user -- "Nome" email senha [admin|operator]');
    process.exit(2);
  }
  if (role && role !== "admin" && role !== "operator") {
    console.error("Papel inválido. Use 'admin' ou 'operator'.");
    process.exit(2);
  }

  const existing = await findByEmail(email);
  if (existing) {
    console.error(`Já existe um usuário com o e-mail ${email}.`);
    process.exit(1);
  }

  const id = await createUser({
    name,
    email,
    password,
    role: (role as "admin" | "operator") ?? "operator",
  });
  console.log(`Usuário criado: id=${id}, email=${email}, role=${role ?? "operator"}`);
}

main()
  .catch((err) => {
    console.error("Falha:", err instanceof Error ? err.message : err);
    process.exitCode = 1;
  })
  .finally(() => closePool());
