#!/bin/bash
# Script interactif de migration vers MariaDB

set -e  # Arrêter en cas d'erreur

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

clear
echo -e "${BLUE}"
echo "╔══════════════════════════════════════════════════════════════╗"
echo "║                                                              ║"
echo "║      🚀 MIGRATION DJANGO → MARIADB                          ║"
echo "║                                                              ║"
echo "║      Blog Duhaz - Migration Interactive                     ║"
echo "║                                                              ║"
echo "╚══════════════════════════════════════════════════════════════╝"
echo -e "${NC}"
echo ""

# Fonction pour afficher un message et attendre
pause() {
    echo ""
    read -p "Appuyez sur Entrée pour continuer..."
    echo ""
}

# Fonction pour poser une question oui/non
ask_yes_no() {
    while true; do
        read -p "$1 (o/n) " yn
        case $yn in
            [Oo]* ) return 0;;
            [Nn]* ) return 1;;
            * ) echo "Répondez par o (oui) ou n (non).";;
        esac
    done
}

# Étape 1: Vérifications préliminaires
echo -e "${YELLOW}═══ Étape 1/7 : Vérifications préliminaires ═══${NC}"
echo ""

if [ ! -f "requirements.txt" ]; then
    echo -e "${RED}❌ Erreur: requirements.txt non trouvé${NC}"
    echo "   Êtes-vous dans le bon répertoire?"
    exit 1
fi

if [ ! -f ".env" ]; then
    echo -e "${RED}❌ Erreur: Fichier .env non trouvé${NC}"
    if [ -f ".env.example" ]; then
        echo -e "${YELLOW}   💡 Copiez .env.example vers .env et configurez-le${NC}"
        if ask_yes_no "Voulez-vous que je le fasse maintenant?"; then
            cp .env.example .env
            echo -e "${GREEN}✅ Fichier .env créé${NC}"
            echo -e "${YELLOW}⚠️  Éditez maintenant le fichier .env pour configurer MariaDB${NC}"
            pause
        else
            exit 1
        fi
    else
        exit 1
    fi
fi

echo -e "${GREEN}✅ Fichiers de configuration présents${NC}"
pause

# Étape 2: Vérification des dépendances Python
echo -e "${YELLOW}═══ Étape 2/7 : Installation des dépendances Python ═══${NC}"
echo ""

if python3 -c "import MySQLdb" 2>/dev/null; then
    echo -e "${GREEN}✅ mysqlclient déjà installé${NC}"
else
    echo -e "${YELLOW}⚠️  mysqlclient n'est pas installé${NC}"
    if ask_yes_no "Voulez-vous installer toutes les dépendances maintenant?"; then
        echo "Installation en cours..."
        pip3 install -r requirements.txt
        echo -e "${GREEN}✅ Dépendances installées${NC}"
    else
        echo -e "${RED}❌ mysqlclient est requis. Installation annulée.${NC}"
        exit 1
    fi
fi
pause

# Étape 3: Configuration du fichier .env
echo -e "${YELLOW}═══ Étape 3/7 : Configuration du .env ═══${NC}"
echo ""
echo "Paramètres actuels:"
echo ""
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
echo ""

DB_ENGINE=$(grep "^DB_ENGINE" .env | cut -d'=' -f2 || echo "sqlite3")
if [ "$DB_ENGINE" != "mysql" ]; then
    echo -e "${RED}⚠️  DB_ENGINE n'est pas configuré sur 'mysql'${NC}"
    echo ""
    echo "Pour une connexion depuis votre Mac vers le RPI:"
    echo "1. Trouvez l'IP de votre RPI : hostname -I"
    echo "2. Configurez DB_HOST avec cette IP dans le .env"
    echo ""
    echo "Exemple de configuration dans .env:"
    echo "   DB_ENGINE=mysql"
    echo "   DB_NAME=duhaz_blog"
    echo "   DB_USER=duhaz_user"
    echo "   DB_PASSWORD=votre_mot_de_passe"
    echo "   DB_HOST=192.168.1.100  # IP de votre RPI"
    echo "   DB_PORT=3306"
    echo ""
    
    if ask_yes_no "Voulez-vous éditer le fichier .env maintenant?"; then
        ${EDITOR:-nano} .env
        echo -e "${GREEN}✅ Fichier .env modifié${NC}"
    else
        echo -e "${YELLOW}⚠️  Assurez-vous de le configurer avant de continuer${NC}"
        exit 1
    fi
else
    echo -e "${GREEN}✅ DB_ENGINE configuré sur mysql${NC}"
fi
pause

# Étape 4: Test de connexion au serveur MariaDB
echo -e "${YELLOW}═══ Étape 4/7 : Test de connexion MariaDB ═══${NC}"
echo ""

DB_HOST=$(grep "^DB_HOST" .env | cut -d'=' -f2)
DB_PORT=$(grep "^DB_PORT" .env | cut -d'=' -f2)

echo "Test de connexion vers $DB_HOST:$DB_PORT"
echo ""

if ask_yes_no "Voulez-vous lancer le test de connexion?"; then
    python3 scripts/test_mariadb_connection.py
    if [ $? -eq 0 ]; then
        echo -e "${GREEN}✅ Connexion réussie!${NC}"
    else
        echo -e "${RED}❌ Échec de connexion${NC}"
        echo ""
        echo "Vérifications à faire sur le Raspberry Pi:"
        echo "1. docker ps | grep mariadb"
        echo "2. docker logs mariadb"
        echo "3. docker port mariadb"
        echo ""
        echo "Depuis votre Mac:"
        echo "1. ping $DB_HOST"
        echo "2. telnet $DB_HOST $DB_PORT"
        echo ""
        exit 1
    fi
else
    echo -e "${YELLOW}⚠️  Test de connexion ignoré${NC}"
    if ! ask_yes_no "Voulez-vous continuer quand même?"; then
        exit 1
    fi
fi
pause

# Étape 5: Vérification de la base SQLite source
echo -e "${YELLOW}═══ Étape 5/7 : Vérification de la base source ═══${NC}"
echo ""

if [ -f "db.sqlite3" ]; then
    SIZE=$(du -h db.sqlite3 | cut -f1)
    echo -e "${GREEN}✅ db.sqlite3 trouvé (taille: $SIZE)${NC}"
    echo ""
    
    # Compter les enregistrements
    echo "Statistiques de la base SQLite:"
    python3 -c "
import sqlite3
conn = sqlite3.connect('db.sqlite3')
cursor = conn.cursor()
