#!/bin/bash

# Script para ejecutar migraciones de base de datos
# Se ejecuta automáticamente al iniciar el contenedor de mantenimiento

LOG_FILE="/var/log/cron/migrations.log"
MIGRATIONS_DIR="/var/www/html/database"
MIGRATIONS_APPLIED="/var/www/html/logs/.migrations_applied"

echo "========================================" | tee -a "$LOG_FILE"
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Verificando migraciones..." | tee -a "$LOG_FILE"
echo "========================================" | tee -a "$LOG_FILE"

# Crear archivo de control si no existe
touch "$MIGRATIONS_APPLIED"

# Verificar conexión a BD
if ! mariadb-admin ping -h "${DB_HOST}" -u "${DB_USER}" --password="${DB_PASS}" --silent 2>/dev/null; then
    echo "[ERROR] No se pudo conectar a la base de datos" | tee -a "$LOG_FILE"
    exit 1
fi

# Ejecutar cada archivo .sql en orden alfabético
for migration_file in $(ls -1 "$MIGRATIONS_DIR"/*.sql 2>/dev/null | sort); do
    filename=$(basename "$migration_file")
    
    # Verificar si ya fue aplicada
    if grep -q "^${filename}$" "$MIGRATIONS_APPLIED" 2>/dev/null; then
        echo "[SKIP] $filename - Ya aplicada" | tee -a "$LOG_FILE"
        continue
    fi
    
    echo "[RUN] Ejecutando migración: $filename" | tee -a "$LOG_FILE"
    
    # Ejecutar la migración
    if mysql -h "${DB_HOST}" -u "${DB_USER}" --password="${DB_PASS}" "${DB_NAME}" < "$migration_file" 2>&1 | tee -a "$LOG_FILE"; then
        echo "[OK] $filename - Aplicada correctamente" | tee -a "$LOG_FILE"
        # Marcar como aplicada
        echo "$filename" >> "$MIGRATIONS_APPLIED"
    else
        echo "[ERROR] $filename - Falló la migración" | tee -a "$LOG_FILE"
        exit 1
    fi
done

echo "========================================" | tee -a "$LOG_FILE"
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Migraciones completadas" | tee -a "$LOG_FILE"
echo "========================================" | tee -a "$LOG_FILE"
