#!/bin/bash

# Script d'initialisation et de démarrage de l'API Wedding RSVP

set -e

echo "=== Wedding RSVP API - Setup Script ==="
echo ""

# Vérifier que Docker est installé
if ! command -v docker &> /dev/null; then
    echo "❌ Docker n'est pas installé. Veuillez l'installer d'abord."
    exit 1
fi

if ! command -v docker compose &> /dev/null; then
    echo "❌ Docker Compose n'est pas installé. Veuillez l'installer d'abord."
    exit 1
fi

echo "✅ Docker et Docker Compose sont installés"
echo ""

# Arrêter les conteneurs existants s'ils existent
echo "🛑 Arrêt des conteneurs existants..."
docker compose down 2>/dev/null || true
echo ""

# Construire et démarrer les conteneurs
echo "🔨 Construction et démarrage des conteneurs..."
docker compose up -d --build
echo ""

# Attendre que MySQL soit prêt
echo "⏳ Attente que MySQL soit prêt..."
sleep 10

# Vérifier que MySQL est accessible
max_attempts=30
attempt=0
while ! docker compose exec -T db mysql -u wedding_user -pwedding_pass -e "SELECT 1" &> /dev/null; do
    attempt=$((attempt + 1))
    if [ $attempt -eq $max_attempts ]; then
        echo "❌ MySQL n'est pas accessible après ${max_attempts} tentatives"
        exit 1
    fi
    echo "   Tentative ${attempt}/${max_attempts}..."
    sleep 2
done

echo "✅ MySQL est prêt"
echo ""

# Installer les dépendances Composer
echo "📦 Installation des dépendances PHP..."
docker compose exec -T app composer install --no-interaction
echo ""

# Vérifier le schéma de la base de données
echo "🗄️  Vérification du schéma de la base de données..."
docker compose exec -T db mysql -u wedding_user -pwedding_pass wedding_rsvp -e "SHOW TABLES;"
echo ""

echo "✅ Configuration terminée !"
echo ""
echo "=== Informations utiles ==="
echo "🌐 API accessible sur: http://localhost:8080"
echo "🗄️  Base de données MySQL:"
echo "   - Host: localhost:3306"
echo "   - Database: wedding_rsvp"
echo "   - User: wedding_user"
echo "   - Password: wedding_pass"
echo ""
echo "=== Commandes utiles ==="
echo "📋 Voir les logs:           docker compose logs -f"
echo "🧪 Lancer les tests:        docker compose exec app composer test"
echo "🛑 Arrêter les services:    docker compose down"
echo "🔄 Redémarrer les services: docker compose restart"
echo ""
echo "=== Endpoints API ==="
echo "GET    /guest?first_name=...&last_name=..."
echo "POST   /invitation/{uuid}"
echo "PUT    /invitation/{uuid}"
echo "POST   /invitation/{uuid}/resendMail"
echo "GET    /admin/guests"
echo ""
