/**
 * CLI para cadastrar administradores no SQLite
 *
 * Uso:
 *   node scripts/seed-admin.js --email admin@cambioreal.com --senha 123456 --nome "Admin"
 *
 * Listar admins:
 *   node scripts/seed-admin.js --list
 */
require('dotenv').config({ path: require('path').join(__dirname, '..', '.env') });

const db = require('../src/db-local');
const { createAdmin } = require('../src/admin-auth');

const args = process.argv.slice(2);

function getArg(name) {
  const idx = args.indexOf('--' + name);
  return idx !== -1 && args[idx + 1] ? args[idx + 1] : null;
}

async function main() {
  // List mode
  if (args.includes('--list')) {
    const rows = db.prepare('SELECT id, email, nome, created_at FROM admins').all();
    if (!rows.length) {
      console.log('Nenhum administrador cadastrado.');
    } else {
      console.log('\n  ID | Nome               | Email                        | Criado em');
      console.log('  ' + '-'.repeat(75));
      rows.forEach(r => {
        console.log(`  ${String(r.id).padEnd(3)}| ${r.nome.padEnd(19)}| ${r.email.padEnd(29)}| ${r.created_at}`);
      });
    }
    console.log();
    process.exit(0);
  }

  // Create mode
  const email = getArg('email');
  const senha = getArg('senha');
  const nome = getArg('nome');

  if (!email || !senha || !nome) {
    console.log(`
  Uso: node scripts/seed-admin.js --email <email> --senha <senha> --nome "<nome>"

  Exemplos:
    node scripts/seed-admin.js --email admin@cambioreal.com --senha 123456 --nome "Admin"
    node scripts/seed-admin.js --list
    `);
    process.exit(1);
  }

  try {
    await createAdmin(email, senha, nome);
    console.log(`\n  Administrador cadastrado com sucesso!`);
    console.log(`  Nome:  ${nome}`);
    console.log(`  Email: ${email}\n`);
  } catch (err) {
    if (err.message.includes('UNIQUE')) {
      console.error(`\n  Erro: email "${email}" ja esta cadastrado.\n`);
    } else {
      console.error('Erro:', err.message);
    }
    process.exit(1);
  }
}

main();
