// Creates or resets an admin login.
//   docker compose exec api npx ts-node prisma/create-admin.ts email@x.com 'password'
import { PrismaClient } from '@prisma/client';
import * as argon2 from 'argon2';

const prisma = new PrismaClient();

async function main() {
  const [email, password, name] = process.argv.slice(2);
  if (!email || !password) {
    console.error("usage: create-admin.ts <email> <password> [name]");
    process.exit(1);
  }
  if (password.length < 10) {
    console.error('Use a password of at least 10 characters.');
    process.exit(1);
  }

  const passwordHash = await argon2.hash(password);
  const admin = await prisma.adminUser.upsert({
    where: { email: email.toLowerCase() },
    update: { passwordHash, active: true, ...(name && { name }) },
    create: { email: email.toLowerCase(), passwordHash, name: name ?? null },
  });
  console.log(`admin ready: ${admin.email}`);
}

main().catch((e) => { console.error(e); process.exit(1); })
      .finally(() => prisma.$disconnect());
