/**
 * Seed script — creates the initial admin user.
 * Run: npm run seed
 *
 * Env vars required: DATABASE_URL, and optionally ADMIN_EMAIL / ADMIN_PASSWORD
 */
import 'dotenv/config';
import { authService } from './services/authService.js';
import { sql } from './db.js';

const ADMIN_EMAIL    = process.env.ADMIN_EMAIL    ?? 'admin@example.com';
const ADMIN_PASSWORD = process.env.ADMIN_PASSWORD ?? 'Admin123!';

async function seed() {
  console.log('Seeding database...');

  // Check if admin already exists
  const [existing] = await sql<[{ id: string }]>`
    SELECT id FROM users WHERE email = ${ADMIN_EMAIL.toLowerCase()}
  `;

  if (existing) {
    console.log(`Admin user already exists: ${ADMIN_EMAIL}`);
  } else {
    const user = await authService.createUser(ADMIN_EMAIL, ADMIN_PASSWORD, 'admin');
    console.log(`Created admin user: ${user.email} (${user.id})`);
    console.log(`Password: ${ADMIN_PASSWORD}`);
    console.log('\n⚠️  Change the default password immediately after first login.');
  }

  await sql.end();
  console.log('Done.');
}

seed().catch(err => {
  console.error('Seed failed:', err);
  process.exit(1);
});
