<?php
/**
 * Migración: instancias de WhatsApp POR USUARIO (decisión 22-07-2026).
 *
 * Regla 1:1 — una instancia pertenece a UN usuario y un usuario tiene UNA
 * instancia. Se agrega índice UNIQUE sobre whatsapp_instancias.usuario_id
 * (MySQL permite múltiples NULL: las líneas antiguas sin dueño no bloquean).
 * El resto de la regla (dueño obligatorio al guardar, solo el dueño envía)
 * se aplica en WhatsAppController.
 *
 * Uso: C:\wamp\bin\php\php5.5.12\php.exe database\migracion_instancia_por_usuario.php
 */
$env = include __DIR__ . '/../.env.php';
$pdo = new PDO(
    'mysql:host=' . $env['DB_HOST'] . ';dbname=' . $env['DB_NAME'] . ';charset=utf8mb4',
    $env['DB_USER'],
    $env['DB_PASS'],
    array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)
);

// ¿Hay usuarios con más de una instancia? Habría que resolverlo a mano antes.
$duplicados = $pdo->query(
    "SELECT usuario_id, COUNT(*) as total FROM whatsapp_instancias
     WHERE usuario_id IS NOT NULL GROUP BY usuario_id HAVING total > 1"
)->fetchAll(PDO::FETCH_ASSOC);
if ($duplicados) {
    echo "ATENCION: hay usuarios con más de una instancia; resolver antes de indexar:\n";
    foreach ($duplicados as $d) {
        echo "  usuario_id {$d['usuario_id']}: {$d['total']} instancias\n";
    }
    exit(1);
}

$indices = $pdo->query("SHOW INDEX FROM whatsapp_instancias WHERE Key_name = 'uq_instancia_usuario'")->fetch();
if ($indices) {
    echo "Índice uq_instancia_usuario ya existe.\n";
} else {
    $pdo->exec("ALTER TABLE whatsapp_instancias ADD UNIQUE KEY uq_instancia_usuario (usuario_id)");
    echo "Índice UNIQUE whatsapp_instancias.usuario_id creado.\n";
}
echo "Migración completada.\n";
