#!/bin/bash
# Script zum Debuggen von Server-Errors in Hördle
# Zeigt relevante Logs und Status-Informationen

set -e

echo "🔍 Hördle Server Error Debugging"
echo "=================================="
echo ""

# Container-Status prüfen
echo "📦 Container-Status:"
docker ps --filter "name=hoerdle" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
echo ""

# Prüfe ob Container läuft
if ! docker ps | grep -q "hoerdle"; then
    echo "❌ FEHLER: hoerdle Container läuft nicht!"
    echo ""
    echo "Versuche Container zu starten..."
    docker compose up -d
    sleep 5
    echo ""
fi

# Letzte Logs anzeigen
echo "📋 Letzte 50 Zeilen der Container-Logs:"
echo "----------------------------------------"
docker logs --tail=50 hoerdle 2>&1 | tail -50
echo ""
echo ""

# Suche nach Fehlern in den Logs
echo "🚨 Fehler in den Logs (letzte 100 Zeilen):"
echo "----------------------------------------"
docker logs --tail=100 hoerdle 2>&1 | grep -i -E "error|exception|failed|fatal|panic" || echo "Keine offensichtlichen Fehler gefunden"
echo ""
echo ""

# Container Health Status
echo "💚 Health Check Status:"
docker inspect hoerdle --format='{{json .State.Health}}' | python3 -m json.tool 2>/dev/null || docker inspect hoerdle --format='{{.State.Status}}'
echo ""
echo ""

# Prüfe ob der Server auf Port 3000 antwortet (intern)
echo "🔌 Port-Verbindungstest (intern, Port 3000):"
echo "----------------------------------------"
docker exec hoerdle curl -f -s -o /dev/null -w "HTTP Status: %{http_code}\n" http://localhost:3000/api/daily 2>&1 || echo "❌ Verbindung fehlgeschlagen"
echo ""
echo ""

# Prüfe Datenbank
echo "💾 Datenbank-Status:"
echo "----------------------------------------"
if docker exec hoerdle test -f /app/data/prod.db; then
    echo "✅ Datenbankdatei existiert"
    DB_SIZE=$(docker exec hoerdle stat -c%s /app/data/prod.db 2>/dev/null || echo "unbekannt")
    echo "   Größe: $DB_SIZE Bytes"
else
    echo "❌ Datenbankdatei nicht gefunden!"
fi
echo ""

# Prüfe Umgebungsvariablen (wichtige)
echo "🔐 Wichtige Umgebungsvariablen:"
echo "----------------------------------------"
docker exec hoerdle env | grep -E "DATABASE_URL|NODE_ENV|PORT|HOSTNAME" || echo "Keine gefunden"
echo ""

# Prüfe ob Next.js Server läuft
echo "🌐 Next.js Prozess-Status:"
echo "----------------------------------------"
docker exec hoerdle ps aux | grep -E "node|next" | grep -v grep || echo "Keine Next.js Prozesse gefunden"
echo ""

# Netzwerk-Verbindung prüfen
echo "🌐 Netzwerk-Verbindungen:"
echo "----------------------------------------"
docker network inspect hoerdle_default --format='{{range .Containers}}{{.Name}}: {{.IPv4Address}}{{"\n"}}{{end}}' 2>/dev/null || echo "Netzwerk nicht gefunden"
echo ""

# Caddy Status (falls vorhanden)
if docker ps | grep -q "hoerdle-caddy"; then
    echo "🚪 Caddy-Container Status:"
    echo "----------------------------------------"
    docker logs --tail=20 hoerdle-caddy 2>&1 | tail -20
    echo ""
fi

echo "=================================="
echo "✅ Debug-Informationen gesammelt"
echo ""
echo "💡 Nächste Schritte:"
echo "1. Prüfe die Fehler-Logs oben"
echo "2. Prüfe ob die Datenbank erreichbar ist"
echo "3. Prüfe ob alle Umgebungsvariablen gesetzt sind"
echo "4. Bei weiteren Problemen: docker logs hoerdle --tail=200"

