#!/bin/bash
# Script zum Aktualisieren der Sprachkurse
# Führt Git-Fetch/Pull aus und aktualisiert die Kurs-Übungen
# Findet automatisch die neuesten/relevanten Script-Dateien

# Kein "set -e", damit Scripts auch bei Fehlern weiterlaufen können

echo "🔄 Starte Update der Sprachkurse..."
echo ""

# Prüfe ob wir im richtigen Verzeichnis sind
if [ ! -f "package.json" ]; then
    echo "❌ Fehler: Bitte im Projekt-Root-Verzeichnis ausführen"
    exit 1
fi

# 1. Git Fetch und Pull
echo "📥 Führe Git Fetch aus..."
git fetch

echo "📥 Führe Git Pull aus..."
git pull

echo ""
echo "✅ Git Update abgeschlossen"
echo ""

# 2. Wechsle ins Backend-Verzeichnis
cd backend

# 3. Finde relevante Script-Dateien
# Suche nach Scripts, die mit Sprachkursen zu tun haben
echo "🔍 Suche nach relevanten Script-Dateien..."
echo ""

SCRIPT_DIR="scripts"
RELEVANT_KEYWORDS=("vocab" "course" "lesson" "exercise" "bisaya" "family" "survival" "grammar" "update" "create")

# Finde alle .js-Dateien im scripts-Verzeichnis, die relevante Keywords enthalten
# Sortiere nach Änderungsdatum (neueste zuerst)
TEMP_SCRIPT_LIST=$(mktemp)
find "$SCRIPT_DIR" -name "*.js" -type f | while read -r file; do
    filename=$(basename "$file" .js)
    lowercase=$(echo "$filename" | tr '[:upper:]' '[:lower:]')
    for keyword in "${RELEVANT_KEYWORDS[@]}"; do
        if [[ "$lowercase" == *"$keyword"* ]]; then
            echo "$file"
            break
        fi
    done
done | xargs ls -t 2>/dev/null > "$TEMP_SCRIPT_LIST" || true

SCRIPT_FILES=$(cat "$TEMP_SCRIPT_LIST" 2>/dev/null || true)
rm -f "$TEMP_SCRIPT_LIST"

if [ -z "$SCRIPT_FILES" ]; then
    echo "⚠️  Keine relevanten Script-Dateien gefunden"
    echo ""
else
    echo "📋 Gefundene Script-Dateien (nach Änderungsdatum sortiert):"
    while IFS= read -r script; do
        if [ -n "$script" ] && [ -f "$script" ]; then
            echo "   - $script"
        fi
    done <<< "$SCRIPT_FILES"
    echo ""
    
    # 4. Führe die Scripts aus
    echo "▶️  Starte Ausführung der Scripts..."
    echo ""
    
    EXECUTED_COUNT=0
    FAILED_COUNT=0
    
    while IFS= read -r script; do
        if [ -n "$script" ] && [ -f "$script" ]; then
            script_name=$(basename "$script")
            echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
            echo "📝 Führe aus: $script_name"
            echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
            
            if sudo -u yourpart node "$script"; then
                echo "✅ $script_name erfolgreich abgeschlossen"
                EXECUTED_COUNT=$((EXECUTED_COUNT + 1))
            else
                EXIT_CODE=$?
                echo "❌ $script_name fehlgeschlagen (Exit Code: $EXIT_CODE)"
                FAILED_COUNT=$((FAILED_COUNT + 1))
                # Setze nicht -e, damit weitere Scripts ausgeführt werden können
            fi
            echo ""
        fi
    done <<< "$SCRIPT_FILES"
    
    echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
    echo "🎉 Update der Sprachkurse abgeschlossen!"
    echo ""
    echo "📊 Zusammenfassung:"
    echo "   - Git-Repository aktualisiert"
    echo "   - $EXECUTED_COUNT Script(s) erfolgreich ausgeführt"
    if [ $FAILED_COUNT -gt 0 ]; then
        echo "   - ⚠️  $FAILED_COUNT Script(s) fehlgeschlagen"
    fi
    echo ""
fi

echo "💡 Hinweis: Das Frontend muss separat aktualisiert werden mit: ./deploy-frontend.sh"
