import { pool } from "./config/db.js";

async function migrate() {
  const connection = await pool.getConnection();
  try {
    console.log("Starting configuration table migration...");
    await connection.beginTransaction();

    // 1. Create configuracion table if not exists
    await connection.query(`
      CREATE TABLE IF NOT EXISTS configuracion (
        clave VARCHAR(100) PRIMARY KEY,
        valor TEXT NULL
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
    `);
    console.log("Table 'configuracion' verified/created.");

    // 2. Default config seeds
    const defaultConfigs = [
      { clave: "empresa_nombre", valor: "Lavandería y Sastrería PR" },
      { clave: "empresa_telefono", valor: "(787) 555-0000" },
      { clave: "empresa_email", valor: "contacto@laundryexpress.com" },
      { clave: "empresa_direccion", valor: "Calle 34 #7534, Puerto Rico" },
      { clave: "impuesto_descripcion", valor: "IVU Estatal" },
      { clave: "impuesto_porcentaje", valor: "10.5" },
      { clave: "impuesto_municipal_descripcion", valor: "IVU Municipal" },
      { clave: "impuesto_municipal_porcentaje", valor: "1.0" },
      { clave: "moneda", valor: "USD" },
      { clave: "auto_logout", valor: "15" },
      { clave: "zona_horaria", valor: "America/Puerto_Rico" },
      { clave: "formato_fecha", valor: "m/d/Y" },
      {
        clave: "recibo_footer",
        valor: "Gracias por preferirnos, vuelva pronto.\n1. No somos responsables por botones, broches, pendientes, accesorios, etc. dejados en su ropa.\n2. Favor verificar y contar su ropa antes de salir del establecimiento de lo contrario no aceptaremos reclamaciones.\n3. No responderemos si su ropa se destiñe o encoje.\n4. No se aceptaran reclamaciones si se advirtió de su posible daño al procesar.\n5. No somos responsables en caso de desastre."
      }
    ];

    for (const conf of defaultConfigs) {
      await connection.query(`
        INSERT INTO configuracion (clave, valor)
        VALUES (:clave, :valor)
        ON DUPLICATE KEY UPDATE valor = valor
      `, { clave: conf.clave, valor: conf.valor });
    }
    console.log("Default configuration seeded.");

    await connection.commit();
    console.log("Configuration table migration complete!");
    process.exit(0);
  } catch (err) {
    await connection.rollback();
    console.error("Migration failed:", err);
    process.exit(1);
  } finally {
    connection.release();
  }
}

migrate();
