#!/bin/bash

# Script pour démarrer le backend Go Veza
# Usage: ./scripts/start-backend.sh

set -e

# Couleurs pour les messages
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

echo -e "${BLUE}🚀 Démarrage du backend Veza...${NC}"

# Vérifier que Go est installé
if ! command -v go &> /dev/null; then
    echo -e "${RED}❌ Go n'est pas installé. Veuillez installer Go 1.23+${NC}"
    exit 1
fi

# Aller dans le répertoire du backend
cd "$(dirname "$0")/../veza-backend-api" || exit 1

# Vérifier que le répertoire existe
if [ ! -f "go.mod" ]; then
    echo -e "${RED}❌ Répertoire backend non trouvé ou invalide${NC}"
    exit 1
fi

# Vérifier les dépendances
echo -e "${YELLOW}📦 Vérification des dépendances...${NC}"
go mod download

# Vérifier que la base de données est accessible
echo -e "${YELLOW}🔍 Vérification de la connexion à la base de données...${NC}"
if ! command -v psql &> /dev/null; then
    echo -e "${YELLOW}⚠️  psql non trouvé, impossible de vérifier la DB. Continuons...${NC}"
else
    # Tenter de se connecter (ne pas échouer si ça ne marche pas)
    psql -h localhost -U veza -d veza -c "SELECT 1;" &> /dev/null || echo -e "${YELLOW}⚠️  Impossible de se connecter à la DB. Assurez-vous qu'elle est démarrée.${NC}"
fi

# Vérifier si air (hot reload) est disponible
if command -v air &> /dev/null; then
    echo -e "${GREEN}✅ Air détecté - Démarrage avec hot reload${NC}"
    echo -e "${BLUE}📍 Backend sera accessible sur http://127.0.0.1:8080${NC}"
    echo -e "${BLUE}📍 API sera accessible sur http://127.0.0.1:8080/api/v1${NC}"
    echo ""
    exec air
else
    echo -e "${YELLOW}⚠️  Air non trouvé - Démarrage sans hot reload${NC}"
    echo -e "${YELLOW}   Installez air avec: go install github.com/air-verse/air@latest${NC}"
    echo -e "${BLUE}📍 Backend sera accessible sur http://127.0.0.1:8080${NC}"
    echo -e "${BLUE}📍 API sera accessible sur http://127.0.0.1:8080/api/v1${NC}"
    echo ""
    
    # Chercher le point d'entrée
    if [ -f "cmd/modern-server/main.go" ]; then
        exec go run cmd/modern-server/main.go
    elif [ -f "cmd/server/main.go" ]; then
        exec go run cmd/server/main.go
    else
        echo -e "${RED}❌ Point d'entrée non trouvé (cmd/modern-server/main.go ou cmd/server/main.go)${NC}"
        exit 1
    fi
fi
