#!/bin/bash

# Cleanup Test Helper Script
# Hilft beim Testen des automatischen Löschens

echo "========================================"
echo "   CLEANUP TEST HELPER"
echo "========================================"
echo ""

# Prüfe ob Container läuft
if ! docker compose -f ../docker/prod/docker-compose.yml ps | grep -q "backend.*Up"; then
    echo "❌ Backend-Container läuft nicht. Bitte starte ./dev.sh"
    exit 1
fi

function show_unapproved_groups() {
    echo "📋 Nicht-freigegebene Gruppen:"
    echo ""
    docker compose -f ../docker/prod/docker-compose.yml exec -T backend sqlite3 /usr/src/app/src/data/db/image_uploader.db \
        "SELECT group_id || ' | Jahr: ' || year || ' | Name: ' || name || ' | Upload: ' || datetime(upload_date) || ' | Tage: ' || CAST((julianday('now') - julianday(upload_date)) AS INTEGER) 
         FROM groups WHERE approved = 0 ORDER BY upload_date DESC;"
    echo ""
}

function backdate_group() {
    show_unapproved_groups
    
    echo ""
    read -p "Gruppe ID zum Zurückdatieren: " group_id
    read -p "Um wie viele Tage? (z.B. 8): " days
    
    docker compose -f ../docker/prod/docker-compose.yml exec -T backend sqlite3 /usr/src/app/src/data/db/image_uploader.db \
        "UPDATE groups SET upload_date = datetime('now', '-$days days') WHERE group_id = '$group_id';"
    
    echo "✅ Gruppe $group_id wurde um $days Tage zurückdatiert"
    echo ""
    
    # Zeige aktualisierte Info
    docker compose -f ../docker/prod/docker-compose.yml exec -T backend sqlite3 /usr/src/app/src/data/db/image_uploader.db \
        "SELECT 'Gruppe: ' || group_id || ', Upload: ' || datetime(upload_date) || ', Tage alt: ' || CAST((julianday('now') - julianday(upload_date)) AS INTEGER)
         FROM groups WHERE group_id = '$group_id';"
    echo ""
}

function preview_cleanup() {
    echo "🔍 Cleanup Preview (über API):"
    echo ""
    curl -s http://localhost:5000/api/admin/cleanup/preview | jq '.'
    echo ""
}

function trigger_cleanup() {
    echo "⚠️  ACHTUNG: Dies wird Gruppen permanent löschen!"
    echo ""
    read -p "Cleanup wirklich ausführen? (ja/nein): " confirm
    
    if [ "$confirm" != "ja" ]; then
        echo "❌ Abgebrochen"
        return
    fi
    
    echo ""
    echo "🔄 Führe Cleanup aus..."
    echo ""
    curl -s -X POST http://localhost:5000/api/admin/cleanup/trigger | jq '.'
    echo ""
}

function show_deletion_log() {
    echo "📜 Lösch-Historie (letzte 10):"
    echo ""
    curl -s http://localhost:5000/api/admin/deletion-log?limit=10 | jq '.deletions[] | "Gruppe: \(.group_id), Jahr: \(.year), Bilder: \(.image_count), Gelöscht: \(.deleted_at)"'
    echo ""
}

# Menü
while true; do
    echo "Optionen:"
    echo "  1) Zeige nicht-freigegebene Gruppen"
    echo "  2) Gruppe zurückdatieren (für Tests)"
    echo "  3) Preview: Was würde gelöscht?"
    echo "  4) Cleanup JETZT ausführen"
    echo "  5) Lösch-Historie anzeigen"
    echo "  0) Beenden"
    echo ""
    read -p "Wähle Option: " option
    echo ""
    
    case $option in
        1) show_unapproved_groups ;;
        2) backdate_group ;;
        3) preview_cleanup ;;
        4) trigger_cleanup ;;
        5) show_deletion_log ;;
        0) echo "👋 Auf Wiedersehen!"; exit 0 ;;
        *) echo "❌ Ungültige Option" ;;
    esac
done
