import "dotenv/config";
import pool from "../config/db";
import { UserModel } from "../models/userModel";

async function main(): Promise<void> {
  const username = (process.env.NEW_USER_USERNAME || "").trim();
  const password = process.env.NEW_USER_PASSWORD || "";
  const email = (process.env.NEW_USER_EMAIL || "").trim();
  const role = process.env.NEW_USER_ROLE === "ia_admin" ? "ia_admin" : "operator";

  if (!/^[A-Za-z0-9._-]{3,100}$/.test(username)) {
    throw new Error("NEW_USER_USERNAME debe tener 3-100 caracteres seguros");
  }
  if (password.length < 12) {
    throw new Error("NEW_USER_PASSWORD debe tener al menos 12 caracteres");
  }
  if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {
    throw new Error("NEW_USER_EMAIL no es válido");
  }
  if (await UserModel.findByUsername(username)) {
    throw new Error(`El usuario ${username} ya existe`);
  }

  const user = await UserModel.create(username, password, email, role);
  console.log(`Usuario creado: id=${user.id}, username=${user.username}, role=${user.role}`);
}

main()
  .catch(error => { console.error(error.message); process.exitCode = 1; })
  .finally(() => pool.end());
