#!/bin/bash
set -e

# Script de inicialización para el Backend FastAPI
# Espera a las dependencias y ejecuta migraciones antes de iniciar

echo "=========================================="
echo "Backend FastAPI - Inicialización"
echo "=========================================="

# Función para esperar a un puerto TCP usando Python
wait_for_tcp() {
  local host=$1
  local port=$2
  local service=$3
  local max_attempts=30
  local attempt=1

  echo "Esperando a que $service esté disponible en ${host}:${port}..."
  
  while [ $attempt -le $max_attempts ]; do
    if python3 -c "import socket; s = socket.socket(); s.settimeout(3); s.connect(('$host', $port)); s.close()" 2>/dev/null; then
      echo "✓ $service está listo y accesible"
      return 0
    fi
    
    echo "$service no está listo aún... (intento $attempt/$max_attempts)"
    attempt=$((attempt + 1))
    sleep 2
  done

  echo "⚠ WARNING: $service no estuvo disponible después de $max_attempts intentos"
  echo "   Continuando de todas formas..."
  return 0
}

# Esperar a PostgreSQL
wait_for_tcp "${CORE_DB_HOST:-postgres-a76}" "${CORE_DB_PORT:-5432}" "PostgreSQL"

# Esperar al Hub de Aduanasoft (opcional, pero recomendado)
# Extraer host y puerto de HUB_URL si es posible, o usar el default del docker-compose
# HUB_HOST=$(echo $HUB_URL | sed -e 's|http://||' -e 's|:.*||')
# HUB_PORT=$(echo $HUB_URL | sed -e 's|.*:||' -e 's|/.*||')
# wait_for_tcp "${HUB_HOST:-host.docker.internal}" "${HUB_PORT:-8001}" "Aduanasoft Hub"

# Ejecutar migraciones de Alembic
#if [ -d "/app/alembic" ]; then
#  echo "Ejecutando migraciones de Alembic..."
#  alembic upgrade head || {
#    echo "⚠ WARNING: Error al ejecutar migraciones"
#    echo "   Verificando estado de la base de datos..."
#    alembic current || echo "   No se pudo determinar la versión actual"
#  }
#  echo "✓ Migraciones completadas"
#else
#  echo "⚠ WARNING: Directorio /app/alembic no encontrado"
#  echo "   Las migraciones de base de datos no se ejecutaron"
#fi

echo "=========================================="
echo "Iniciando aplicación FastAPI..."
echo "=========================================="

# Ejecutar el comando que se pasó al contenedor
exec "$@"
