/**
 * Création d'un compte (les comptes sont créés par l'admin — pas d'inscription libre).
 *
 * Usage :
 *   npx ts-node src/scripts/create-user.ts <username> <password> [role] [displayName]
 *   (ou après build :  node dist/scripts/create-user.js <username> <password> [role])
 *
 *   role : "super_admin" | "admin" | "user"  (défaut : user)
 */
import { prisma } from "../lib/prisma";
import { hashPassword } from "../lib/password";

async function main() {
  const [, , username, password, roleArg, displayName] = process.argv;

  if (!username || !password) {
    console.error("Usage: create-user <username> <password> [super_admin|admin|user] [displayName]");
    process.exit(1);
  }
  const role =
    roleArg === "super_admin" ? "super_admin" : roleArg === "admin" ? "admin" : "user";

  const existing = await prisma.user.findUnique({ where: { username } });
  if (existing) {
    console.error(`Le compte "${username}" existe déjà.`);
    process.exit(1);
  }

  const passwordHash = await hashPassword(password);
  const user = await prisma.user.create({
    data: { username, passwordHash, role, displayName: displayName ?? null },
  });

  console.log(`✅ Compte créé : ${user.username} (role=${user.role}, id=${user.id})`);
}

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