<?php
require_once 'config.php';

echo "<h1>Iniciando Migración Multi-Tenant...</h1>";

try {
    $pdo = getDBConnection();
    
    // 1. Crear tabla 'ships'
    echo "Creating 'ships' table... ";
    $sqlShips = "CREATE TABLE IF NOT EXISTS ships (
        id INT AUTO_INCREMENT PRIMARY KEY,
        ship_id VARCHAR(50) NOT NULL UNIQUE, -- Identificador de texto como 'BUQUE-01'
        name VARCHAR(100) NOT NULL,
        max_temp FLOAT DEFAULT 25.0,
        created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    )";
    $pdo->exec($sqlShips);
    echo "OK<br>";

    // 2. Insertar buque por defecto si no existe
    echo "Inserting default ship 'BUQUE-01'... ";
    $stmt = $pdo->prepare("INSERT IGNORE INTO ships (ship_id, name, max_temp) VALUES (:id, :name, :max)");
    $stmt->execute([':id' => 'BUQUE-01', ':name' => 'Carguero PNA-01', ':max' => 25.0]);
    echo "OK<br>";

    // 3. Modificar tabla 'users' para agregar 'ship_id' y actualizar roles
    echo "Updating 'users' table structure... <br>";
    
    // Check if ship_id column exists
    $stmt = $pdo->query("SHOW COLUMNS FROM users LIKE 'ship_id'");
    if ($stmt->rowCount() == 0) {
        $pdo->exec("ALTER TABLE users ADD COLUMN ship_id VARCHAR(50) DEFAULT NULL AFTER role");
        echo "- Column 'ship_id' added.<br>";
        
        // Asignar ship_id por defecto a usuarios existentes (excepto super admin si se desea, pero por simplicidad todos a BUQUE-01 inicialmente)
        $pdo->exec("UPDATE users SET ship_id = 'BUQUE-01' WHERE ship_id IS NULL");
        echo "- Existing users assigned to 'BUQUE-01'.<br>";
    } else {
        echo "- Column 'ship_id' already exists.<br>";
    }

    // 4. Asegurar que el campo 'role' soporte los nuevos valores (VARCHAR suele ser suficiente, pero verificamos longitud)
    $pdo->exec("ALTER TABLE users MODIFY COLUMN role VARCHAR(20) NOT NULL DEFAULT 'user'");
    echo "- Role column updated.<br>";

    echo "<h2>Migración Completada con Éxito.</h2>";

} catch (PDOException $e) {
    die("Error en migración: " . $e->getMessage());
}
?>
