#!/bin/bash

# Script de déploiement pour Audio Classifier
# Usage: ./deploy.sh [user@]hostname

set -e

if [ -z "$1" ]; then
    echo "Usage: ./deploy.sh user@hostname"
    echo "Exemple: ./deploy.sh root@mon-serveur.com"
    exit 1
fi

SERVER=$1
APP_NAME="audio-classifier"
REMOTE_DIR="~/$APP_NAME"

echo "🚀 Déploiement de Audio Classifier sur $SERVER"
echo ""

# 1. Vérifier la connexion SSH
echo "📡 Vérification de la connexion SSH..."
ssh $SERVER "echo '✅ Connexion SSH OK'" || exit 1
echo ""

# 2. Créer le dossier distant
echo "📁 Création du dossier distant $REMOTE_DIR..."
ssh $SERVER "mkdir -p $REMOTE_DIR"
echo ""

# 3. Copier les fichiers
echo "📦 Transfert des fichiers..."
rsync -avz --progress \
    --exclude 'node_modules' \
    --exclude '.next' \
    --exclude '__pycache__' \
    --exclude '*.pyc' \
    --exclude '.git' \
    --exclude 'backend/models/*.pb' \
    ./ $SERVER:$REMOTE_DIR/
echo ""

# 4. Télécharger les modèles Essentia sur le serveur
echo "🤖 Téléchargement des modèles Essentia..."
ssh $SERVER "cd $REMOTE_DIR && bash scripts/download-essentia-models.sh"
echo ""

# 5. Vérifier Docker
echo "🐳 Vérification de Docker..."
ssh $SERVER "command -v docker >/dev/null 2>&1" || {
    echo "⚠️  Docker n'est pas installé sur le serveur."
    echo "Installation de Docker..."
    ssh $SERVER "curl -fsSL https://get.docker.com | sudo sh && sudo usermod -aG docker \$(whoami)"
    echo "✅ Docker installé. Vous devrez peut-être vous reconnecter au serveur."
}

ssh $SERVER "command -v docker-compose >/dev/null 2>&1 || command -v docker compose >/dev/null 2>&1" || {
    echo "⚠️  Docker Compose n'est pas installé."
    echo "Installation de Docker Compose..."
    ssh $SERVER "sudo apt-get update && sudo apt-get install -y docker-compose-plugin"
}
echo ""

# 6. Build et démarrage
echo "🔨 Build et démarrage de l'application..."
ssh $SERVER "cd $REMOTE_DIR && docker-compose down && docker-compose build && docker-compose up -d"
echo ""

# 7. Vérifier le statut
echo "📊 Vérification du statut..."
sleep 5
ssh $SERVER "cd $REMOTE_DIR && docker-compose ps"
echo ""

echo "✅ Déploiement terminé !"
echo ""
echo "🌐 L'application devrait être accessible sur:"
echo "   - Backend API: http://$SERVER:8000"
echo "   - Frontend: http://$SERVER:3000"
echo ""
echo "📝 Pour voir les logs:"
echo "   ssh $SERVER 'cd $REMOTE_DIR && docker-compose logs -f'"
