import mysql from "mysql2/promise";
import bcrypt from "bcrypt";

const pool = mysql.createPool({
  host: process.env.DB_HOST || "localhost",
  user: process.env.DB_USER || "root",
  password: process.env.DB_PASSWORD || "",
  database: process.env.DB_NAME || "coinkrazy",
  waitForConnections: true,
  connectionLimit: 10,
  queueLimit: 0,
});

async function addAdmin() {
  const connection = await pool.getConnection();
  try {
    const email = "coinkrazy26@gmail.com";
    const password = "admin123";
    const name = "Admin";

    // Check if user already exists
    const [existing] = await connection.query("SELECT id FROM users WHERE email = ?", [email]);
    if (existing.length > 0) {
      console.log("Admin account already exists");
      return;
    }

    // Hash password
    const passwordHash = await bcrypt.hash(password, 10);
    const openId = `admin_${Date.now()}`;

    // Insert user
    await connection.query(
      "INSERT INTO users (openId, email, passwordHash, name, role, loginMethod, lastSignedIn, createdAt) VALUES (?, ?, ?, ?, ?, ?, ?, NOW())",
      [openId, email, passwordHash, name, "admin", "email", new Date()]
    );

    console.log("✅ Admin account created successfully!");
    console.log(`Email: ${email}`);
    console.log(`Password: ${password}`);
  } catch (error) {
    console.error("❌ Error adding admin:", error.message);
    process.exit(1);
  } finally {
    await connection.release();
    await pool.end();
  }
}

addAdmin();
