#!/bin/bash

# Script de deployment para Francia Ocupada
# Este script se ejecuta en el HOST, no en el runner

set -e  # Salir si hay algún error

echo "🚀 Iniciando deployment de Francia Ocupada..."
echo "================================================"

# Directorio del proyecto
PROJECT_DIR="/home/marti/docker/FranciaOcupada"
cd "$PROJECT_DIR"

echo "📂 Directorio de trabajo: $(pwd)"
echo ""

# PASO 1: Actualizar código desde Git
echo "📥 PASO 1: Actualizando código desde Git..."
git fetch origin
git reset --hard origin/main
echo "✅ Código actualizado"
echo ""

# PASO 2: Detener contenedores anteriores
echo "🛑 PASO 2: Deteniendo contenedores anteriores..."
docker compose -f docker-compose_prod.yml down || true
docker container prune -f || true
echo "✅ Contenedores anteriores detenidos"
echo ""

# PASO 3: Limpiar imágenes antiguas
echo "🧹 PASO 3: Limpiando imágenes antiguas..."
docker image prune -f || true
echo "✅ Limpieza completada"
echo ""

# PASO 4: Construir imágenes Docker
echo "🔨 PASO 4: Construyendo imágenes Docker..."
docker compose -f docker-compose_prod.yml build --no-cache

# Etiquetar con timestamp para trazabilidad
TAG_VERSION=$(date +%Y%m%d_%H%M%S)
docker tag resistencia-client:latest resistencia-client:${TAG_VERSION} || true
docker tag resistencia-server:latest resistencia-server:${TAG_VERSION} || true

echo "✅ Imágenes construidas:"
echo "  - resistencia-client:latest (${TAG_VERSION})"
echo "  - resistencia-server:latest (${TAG_VERSION})"
echo ""

# PASO 5: Desplegar contenedores
echo "📦 PASO 5: Desplegando aplicación..."
docker compose -f docker-compose_prod.yml up -d

echo "✅ Aplicación desplegada exitosamente"
echo ""

# PASO 6: Verificar deployment
echo "✅ PASO 6: Verificando deployment..."
sleep 10

echo "📊 Estado de los contenedores:"
docker compose -f docker-compose_prod.yml ps
echo ""

# Verificar que los contenedores están corriendo
RUNNING_CONTAINERS=$(docker compose -f docker-compose_prod.yml ps -q | wc -l)
if [ "$RUNNING_CONTAINERS" -eq 0 ]; then
  echo "❌ ERROR: No hay contenedores corriendo"
  docker compose -f docker-compose_prod.yml logs
  exit 1
fi

echo "✅ Verificación completada - $RUNNING_CONTAINERS contenedores corriendo"
echo ""

# PASO 7: Mostrar logs recientes
echo "📋 PASO 7: Logs recientes..."
echo ""
echo "--- Logs del Cliente (últimas 20 líneas) ---"
docker compose -f docker-compose_prod.yml logs --tail=20 client || true
echo ""
echo "--- Logs del Servidor (últimas 20 líneas) ---"
docker compose -f docker-compose_prod.yml logs --tail=20 server || true
echo ""

echo "================================================"
echo "🎉 Deployment completado exitosamente!"
echo ""
echo "🌐 Aplicación disponible en:"
echo "  - Frontend: https://franciaocupada.martivich.es"
echo "  - API: https://api.franciaocupada.martivich.es"
echo "================================================"
