#!/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