<?php
require_once 'config.php';

try {
    $pdo = getDBConnection();
    if (!$pdo) {
        die("Error: No se pudo conectar a la base de datos.\n");
    }

    $oldId = 'BOUCIÑA-01';
    $newId = 'BOUCINA-01';

    echo "Iniciando migración de ID de buque: $oldId -> $newId\n";

    // Iniciamos transacción
    $pdo->beginTransaction();

    // 1. Desactivar restricciones de llaves foráneas temporalmente
    $pdo->exec("SET FOREIGN_KEY_CHECKS = 0");

    // 2. Actualizar tabla ships
    $stmt = $pdo->prepare("UPDATE ships SET ship_id = :newId WHERE ship_id = :oldId");
    $stmt->execute([':newId' => $newId, ':oldId' => $oldId]);
    echo "Tabla ships: " . $stmt->rowCount() . " filas actualizadas.\n";

    // 3. Actualizar tabla users
    $stmt = $pdo->prepare("UPDATE users SET ship_id = :newId WHERE ship_id = :oldId");
    $stmt->execute([':newId' => $newId, ':oldId' => $oldId]);
    echo "Tabla users: " . $stmt->rowCount() . " filas actualizadas.\n";

    // 4. Actualizar tabla user_ships
    $stmt = $pdo->prepare("UPDATE user_ships SET ship_id = :newId WHERE ship_id = :oldId");
    $stmt->execute([':newId' => $newId, ':oldId' => $oldId]);
    echo "Tabla user_ships: " . $stmt->rowCount() . " filas actualizadas.\n";

    // 5. Actualizar tabla mediciones
    $stmt = $pdo->prepare("UPDATE mediciones SET buque_id = :newId WHERE buque_id = :oldId");
    $stmt->execute([':newId' => $newId, ':oldId' => $oldId]);
    echo "Tabla mediciones: " . $stmt->rowCount() . " filas actualizadas.\n";

    // 6. Actualizar tabla sensor_positions
    $stmt = $pdo->prepare("UPDATE sensor_positions SET buque_id = :newId WHERE buque_id = :oldId");
    $stmt->execute([':newId' => $newId, ':oldId' => $oldId]);
    echo "Tabla sensor_positions: " . $stmt->rowCount() . " filas actualizadas.\n";

    // 7. Actualizar tabla sensor_temperature_config
    $stmt = $pdo->prepare("UPDATE sensor_temperature_config SET buque_id = :newId WHERE buque_id = :oldId");
    $stmt->execute([':newId' => $newId, ':oldId' => $oldId]);
    echo "Tabla sensor_temperature_config: " . $stmt->rowCount() . " filas actualizadas.\n";

    // 8. Activar restricciones de llaves foráneas
    $pdo->exec("SET FOREIGN_KEY_CHECKS = 1");

    $pdo->commit();
    echo "Migración completada con éxito.\n";

} catch (Exception $e) {
    if (isset($pdo)) $pdo->rollBack();
    die("Error durante la migración: " . $e->getMessage() . "\n");
}
