#!/bin/sh
set -e

# =========================
# Variables base
# =========================
ROLE="${CONTAINER_ROLE:-web}"
RUN_MIGRATIONS="${RUN_MIGRATIONS:-false}"
CACHE_CONFIG="${CACHE_CONFIG:-false}"

echo "🚀 Iniciando contenedor..."
echo "HOSTNAME=$HOSTNAME"
echo "ROLE=$ROLE"

# =========================
# Validación de rol
# =========================
case "$ROLE" in
  web|worker|scheduler) ;;
  *)
    echo "❌ ERROR: ROLE inválido: '$ROLE'"
    exit 1
    ;;
esac

# =========================
# 1) Permisos (SOLO WEB)
# =========================
if [ "$ROLE" = "web" ]; then
  echo "🔧 Ajustando permisos de carpetas..."
  chown -R www-data:www-data /app/storage /app/bootstrap/cache || true
  chmod -R 775 /app/storage /app/bootstrap/cache || true
fi

# =========================
# 2) Cache / ENV handling
# =========================
if [ "$ROLE" = "web" ] && [ "$CACHE_CONFIG" = "true" ]; then
  echo "🔥 Cacheando configuración (WEB)..."
  php artisan config:cache || true
  php artisan route:cache || true
  php artisan view:cache || true
else
  echo "🧹 Limpiando caches..."
  php artisan config:clear || true
  php artisan route:clear || true
  php artisan view:clear || true
fi

# =========================
# 3) Storage link (SOLO WEB)
# =========================
if [ "$ROLE" = "web" ]; then
  if [ ! -L public/storage ]; then
    echo "🔗 Creando enlace simbólico storage..."
    php artisan storage:link || true
  fi
fi

# =========================
# 4) Migraciones (SOLO WEB)
# =========================
if [ "$ROLE" = "web" ] && [ "$RUN_MIGRATIONS" = "true" ]; then
  echo "📦 Ejecutando migraciones..."
  # Migra la tabla de jobs si usas 'database' driver
  php artisan migrate --force
fi

# =========================
# 5) WORKER (COLAS)
# =========================
if [ "$ROLE" = "worker" ]; then
  echo "👷 Iniciando QUEUE worker..."
  
  # CAMBIO IMPORTANTE: Quitamos "redis" explícito.
  # Laravel usará lo que esté en QUEUE_CONNECTION del .env
  php artisan queue:work \
    --queue=default \
    --sleep=2 \
    --tries=3 \
    --timeout=900 \
    --memory=512 \
    -vvv

  exit 0
fi

# =========================
# 6) SCHEDULER
# =========================
if [ "$ROLE" = "scheduler" ]; then
  echo "🕒 Iniciando SCHEDULER..."
  exec php artisan schedule:work
fi

# =========================
# 7) WEB (Octane + FrankenPHP)
# =========================
echo "✅ Iniciando servidor Octane (FrankenPHP) en puerto 8000..."
exec php artisan octane:start \
  --server=frankenphp \
  --host=0.0.0.0 \
  --port=8000 \
  --workers="${OCTANE_WORKERS:-1}"