#!/bin/bash

# Script de déploiement pour O2switch
# Ce script configure et déploie l'API DonShare sur O2switch

set -e

echo "🚀 Déploiement DonShare API sur O2switch..."

# Configuration O2switch
O2SWITCH_USER="votre_utilisateur_o2switch"
O2SWITCH_HOST="votre_domaine.com"
O2SWITCH_PATH="/home/$O2SWITCH_USER/www/api"
PYTHON_VERSION="3.11"

# Vérification des variables d'environnement
if [ -z "$O2SWITCH_USER" ] || [ "$O2SWITCH_USER" = "votre_utilisateur_o2switch" ]; then
    echo "❌ Veuillez configurer O2SWITCH_USER dans ce script"
    exit 1
fi

if [ -z "$O2SWITCH_HOST" ] || [ "$O2SWITCH_HOST" = "votre_domaine.com" ]; then
    echo "❌ Veuillez configurer O2SWITCH_HOST dans ce script"
    exit 1
fi

echo "📋 Configuration détectée:"
echo "   Utilisateur: $O2SWITCH_USER"
echo "   Hôte: $O2SWITCH_HOST"
echo "   Chemin: $O2SWITCH_PATH"

# Création du fichier .env pour la production
echo "⚙️ Configuration de l'environnement de production..."
cat > .env.production << EOF
# Configuration de production pour O2switch
DATABASE_URL=postgresql://donshare_user:donshare_password@localhost:5432/donshare_db
SECRET_KEY=$(openssl rand -hex 32)
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=30

# Configuration de l'application
DEBUG=False
CORS_ORIGINS=https://votre-domaine.com,https://www.votre-domaine.com
API_V1_PREFIX=/api/v1
PROJECT_NAME=DonShare API
VERSION=1.0.0

# Configuration email (optionnel)
SMTP_HOST=smtp.o2switch.com
SMTP_PORT=587
SMTP_USER=votre_email@votre-domaine.com
SMTP_PASSWORD=votre_mot_de_passe_email
EMAIL_FROM=noreply@votre-domaine.com

# Configuration des fichiers
UPLOAD_DIR=uploads
MAX_FILE_SIZE=10485760

# Configuration Redis (optionnel)
REDIS_URL=redis://localhost:6379/0

# Configuration AWS S3 (optionnel)
AWS_ACCESS_KEY_ID=votre_access_key
AWS_SECRET_ACCESS_KEY=votre_secret_key
AWS_REGION=eu-west-3
AWS_S3_BUCKET=votre-bucket-s3
EOF

echo "✅ Fichier .env.production créé"

# Création du script de déploiement distant
cat > deploy-remote.sh << 'EOF'
#!/bin/bash

# Script exécuté sur le serveur O2switch
set -e

echo "🔧 Configuration du serveur..."

# Mise à jour du système
sudo apt-get update
sudo apt-get install -y python3.11 python3.11-venv python3.11-dev postgresql postgresql-contrib nginx redis-server

# Configuration PostgreSQL
sudo -u postgres psql << 'SQL'
CREATE DATABASE donshare_db;
CREATE USER donshare_user WITH PASSWORD 'donshare_password';
GRANT ALL PRIVILEGES ON DATABASE donshare_db TO donshare_user;
\q
SQL

# Configuration de l'environnement Python
python3.11 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt

# Configuration des migrations
alembic upgrade head

# Configuration Nginx
sudo tee /etc/nginx/sites-available/donshare-api << 'NGINX'
server {
    listen 80;
    server_name api.votre-domaine.com;

    location / {
        proxy_pass http://127.0.0.1:8000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location /static/ {
        alias /home/votre_utilisateur_o2switch/www/api/static/;
    }
}
NGINX

sudo ln -sf /etc/nginx/sites-available/donshare-api /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

# Configuration systemd pour l'API
sudo tee /etc/systemd/system/donshare-api.service << 'SYSTEMD'
[Unit]
Description=DonShare API
After=network.target

[Service]
Type=simple
User=votre_utilisateur_o2switch
WorkingDirectory=/home/votre_utilisateur_o2switch/www/api
Environment=PATH=/home/votre_utilisateur_o2switch/www/api/venv/bin
ExecStart=/home/votre_utilisateur_o2switch/www/api/venv/bin/uvicorn app.main:app --host 127.0.0.1 --port 8000
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target
SYSTEMD

sudo systemctl daemon-reload
sudo systemctl enable donshare-api
sudo systemctl start donshare-api

echo "✅ Configuration terminée"
EOF

# Création du script de déploiement local
echo "📤 Préparation du déploiement..."

# Création de l'archive
tar -czf donshare-api.tar.gz \
    --exclude=venv \
    --exclude=__pycache__ \
    --exclude=*.pyc \
    --exclude=.git \
    --exclude=uploads \
    --exclude=.env \
    .

echo "📦 Archive créée: donshare-api.tar.gz"

# Instructions de déploiement
echo ""
echo "📋 Instructions de déploiement:"
echo "1. Transférez les fichiers vers O2switch:"
echo "   scp donshare-api.tar.gz $O2SWITCH_USER@$O2SWITCH_HOST:/tmp/"
echo "   scp deploy-remote.sh $O2SWITCH_USER@$O2SWITCH_HOST:/tmp/"
echo ""
echo "2. Connectez-vous à O2switch:"
echo "   ssh $O2SWITCH_USER@$O2SWITCH_HOST"
echo ""
echo "3. Exécutez le déploiement:"
echo "   cd /tmp"
echo "   chmod +x deploy-remote.sh"
echo "   ./deploy-remote.sh"
echo ""
echo "4. Extrayez et configurez l'application:"
echo "   mkdir -p $O2SWITCH_PATH"
echo "   cd $O2SWITCH_PATH"
echo "   tar -xzf /tmp/donshare-api.tar.gz"
echo "   cp .env.production .env"
echo "   # Éditez .env avec vos vraies valeurs"
echo "   nano .env"
echo ""
echo "5. Redémarrez l'API:"
echo "   sudo systemctl restart donshare-api"
echo ""
echo "6. Vérifiez le statut:"
echo "   sudo systemctl status donshare-api"
echo "   curl http://localhost:8000/api/v1/health"
echo ""

echo "🎯 Déploiement prêt! Suivez les instructions ci-dessus."
