#!/bin/bash
# Script de vérification avant migration vers MariaDB

echo "════════════════════════════════════════════════════════════"
echo "🔍 Vérification pré-migration MariaDB"
echo "════════════════════════════════════════════════════════════"
echo ""

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

# Fonction de vérification
check_step() {
    if [ $? -eq 0 ]; then
        echo -e "${GREEN}✅ $1${NC}"
        return 0
    else
        echo -e "${RED}❌ $1${NC}"
        return 1
    fi
}

# 1. Vérifier Python
echo "1️⃣ Vérification de Python..."
python3 --version
check_step "Python installé"
echo ""

# 2. Vérifier les dépendances Python
echo "2️⃣ Vérification des dépendances Python..."
if python3 -c "import MySQLdb" 2>/dev/null; then
    echo -e "${GREEN}✅ mysqlclient installé${NC}"
else
    echo -e "${RED}❌ mysqlclient NON installé${NC}"
    echo -e "${YELLOW}   💡 Installez-le avec: pip3 install mysqlclient${NC}"
    MISSING_DEPS=1
fi

if python3 -c "import django" 2>/dev/null; then
    echo -e "${GREEN}✅ Django installé${NC}"
else
    echo -e "${RED}❌ Django NON installé${NC}"
    MISSING_DEPS=1
fi

if python3 -c "import dotenv" 2>/dev/null; then
    echo -e "${GREEN}✅ python-dotenv installé${NC}"
else
    echo -e "${RED}❌ python-dotenv NON installé${NC}"
    MISSING_DEPS=1
fi
echo ""

# 3. Vérifier le fichier .env
echo "3️⃣ Vérification du fichier .env..."
if [ -f .env ]; then
    echo -e "${GREEN}✅ Fichier .env trouvé${NC}"
    
    # Vérifier DB_ENGINE
    DB_ENGINE=$(grep "^DB_ENGINE" .env | cut -d'=' -f2)
    if [ "$DB_ENGINE" = "mysql" ]; then
        echo -e "${GREEN}   ✅ DB_ENGINE=mysql${NC}"
    else
        echo -e "${YELLOW}   ⚠️  DB_ENGINE=$DB_ENGINE (devrait être 'mysql' pour MariaDB)${NC}"
    fi
    
    # Afficher les paramètres de connexion
    echo "   Configuration actuelle:"
    grep "^DB_" .env | while read line; do
        key=$(echo $line | cut -d'=' -f1)
        value=$(echo $line | cut -d'=' -f2)
        if [ "$key" = "DB_PASSWORD" ]; then
            echo "      $key=****"
        else
            echo "      $key=$value"
        fi
    done
else
    echo -e "${RED}❌ Fichier .env NON trouvé${NC}"
    echo -e "${YELLOW}   💡 Copiez .env.example vers .env et configurez-le${NC}"
    exit 1
fi
echo ""

# 4. Vérifier la connexion réseau au serveur MariaDB
echo "4️⃣ Test de connexion réseau..."
DB_HOST=$(grep "^DB_HOST" .env | cut -d'=' -f2)
DB_PORT=$(grep "^DB_PORT" .env | cut -d'=' -f2)

echo "   Hôte: $DB_HOST"
echo "   Port: $DB_PORT"

# Test de ping (optionnel, peut ne pas fonctionner avec Docker)
if command -v nc &> /dev/null; then
    if nc -z -w3 "$DB_HOST" "$DB_PORT" 2>/dev/null; then
        echo -e "${GREEN}✅ Port $DB_PORT accessible sur $DB_HOST${NC}"
    else
        echo -e "${RED}❌ Port $DB_PORT NON accessible sur $DB_HOST${NC}"
        echo -e "${YELLOW}   💡 Vérifications:${NC}"
        echo -e "${YELLOW}      1. Le conteneur MariaDB est-il démarré?${NC}"
        echo -e "${YELLOW}         docker ps | grep mariadb${NC}"
        echo -e "${YELLOW}      2. Le port est-il exposé?${NC}"
        echo -e "${YELLOW}         docker port mariadb${NC}"
    fi
else
    echo -e "${YELLOW}⚠️  'nc' non disponible, impossible de tester le port${NC}"
fi
echo ""

# 5. Vérifier la base de données SQLite source
echo "5️⃣ Vérification de la base SQLite source..."
if [ -f "db.sqlite3" ]; then
    SIZE=$(du -h db.sqlite3 | cut -f1)
    echo -e "${GREEN}✅ db.sqlite3 trouvé (taille: $SIZE)${NC}"
else
    echo -e "${YELLOW}⚠️  db.sqlite3 non trouvé${NC}"
fi
echo ""

# 6. Résumé
echo "════════════════════════════════════════════════════════════"
echo "📋 Résumé"
echo "════════════════════════════════════════════════════════════"

if [ -n "$MISSING_DEPS" ]; then
    echo -e "${RED}❌ Des dépendances manquent${NC}"
    echo ""
    echo "Installation recommandée:"
    echo "  pip3 install -r requirements.txt"
    echo ""
    exit 1
fi

echo -e "${GREEN}✅ Prêt pour la migration!${NC}"
echo ""
echo "Prochaines étapes:"
echo "  1. Assurez-vous que le conteneur MariaDB est démarré"
echo "  2. Vérifiez que DB_HOST pointe vers le bon serveur"
echo "  3. Si DB_HOST='mariadb' ne fonctionne pas depuis votre Mac,"
echo "     utilisez l'adresse IP de votre Raspberry Pi"
echo "  4. Lancez le test de connexion:"
echo "     python3 scripts/test_mariadb_connection.py"
echo "  5. Si tout fonctionne, lancez la migration:"
echo "     python3 scripts/migrate_to_mariadb.py"
echo ""
