#!/bin/bash

# ZYS Hotel - Database Backup Script
# Dieses Script erstellt automatische Backups der PostgreSQL Datenbank

echo "🗄️  ZYS Hotel - Database Backup"

# Konfiguration aus .env laden
if [ -f .env ]; then
    export $(grep -v '^#' .env | xargs)
else
    echo "❌ .env Datei nicht gefunden!"
    exit 1
fi

# Backup Verzeichnis erstellen
BACKUP_DIR="backups"
mkdir -p $BACKUP_DIR

# Datum und Zeit für Dateinamen
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$BACKUP_DIR/zyshotel_backup_$DATE.sql"

echo "📅 Backup wird erstellt: $BACKUP_FILE"

# Datenbank URL parsen
DB_URL=${DATABASE_URL}
if [ -z "$DB_URL" ]; then
    echo "❌ DATABASE_URL nicht konfiguriert!"
    exit 1
fi

# PostgreSQL Backup erstellen
echo "💾 Erstelle Datenbank Backup..."

# pg_dump mit Connection String
pg_dump "$DB_URL" > "$BACKUP_FILE"

if [ $? -eq 0 ]; then
    echo "✅ Backup erfolgreich erstellt: $BACKUP_FILE"
    
    # Backup komprimieren
    echo "🗜️  Komprimiere Backup..."
    gzip "$BACKUP_FILE"
    
    if [ $? -eq 0 ]; then
        echo "✅ Backup komprimiert: $BACKUP_FILE.gz"
        
        # Dateigröße anzeigen
        SIZE=$(du -h "$BACKUP_FILE.gz" | cut -f1)
        echo "📊 Backup Größe: $SIZE"
    else
        echo "⚠️  Komprimierung fehlgeschlagen, unkomprimierte Datei bleibt erhalten"
    fi
    
    # Alte Backups löschen (älter als 7 Tage)
    echo "🧹 Lösche alte Backups (älter als 7 Tage)..."
    find $BACKUP_DIR -name "zyshotel_backup_*.sql.gz" -mtime +7 -delete
    find $BACKUP_DIR -name "zyshotel_backup_*.sql" -mtime +7 -delete
    
    # Anzahl verbleibender Backups
    BACKUP_COUNT=$(ls -1 $BACKUP_DIR/zyshotel_backup_*.gz 2>/dev/null | wc -l)
    echo "📁 Verbleibende Backups: $BACKUP_COUNT"
    
    echo "🎉 Backup Prozess abgeschlossen!"
    
else
    echo "❌ Backup fehlgeschlagen!"
    echo "Überprüfen Sie:"
    echo "   - PostgreSQL ist erreichbar"
    echo "   - DATABASE_URL ist korrekt"
    echo "   - Benutzer hat Backup-Berechtigung"
    exit 1
fi

# Optional: Backup zu Remote-Server senden
# Entkommentieren und anpassen falls gewünscht
# rsync -avz "$BACKUP_FILE.gz" user@backup-server:/path/to/backups/

echo "✨ Backup abgeschlossen: $(date)"