#!/bin/bash # Einfaches Fix-Skript für i18n-Daten # Kopiert SQL-Befehle direkt in den Container und führt sie aus set -e echo "🔧 Fixe i18n-Daten in der Datenbank..." echo "" # Prüfe ob Container läuft if ! docker ps | grep -q hoerdle; then echo "❌ Container 'hoerdle' läuft nicht!" exit 1 fi # Erstelle temporäres SQL-Skript SQL_SCRIPT=$(mktemp) cat > "$SQL_SCRIPT" << 'EOF' -- Backup erstellen (optional, aber empfohlen) .backup /tmp/prod.db.backup -- Fix Genre.name: Konvertiere String zu JSON UPDATE Genre SET name = json_object('de', name, 'en', name) WHERE typeof(name) = 'text' AND name NOT LIKE '{%'; -- Fix Genre.subtitle UPDATE Genre SET subtitle = json_object('de', subtitle, 'en', subtitle) WHERE subtitle IS NOT NULL AND typeof(subtitle) = 'text' AND subtitle NOT LIKE '{%'; -- Fix Special.name UPDATE Special SET name = json_object('de', name, 'en', name) WHERE typeof(name) = 'text' AND name NOT LIKE '{%'; -- Fix Special.subtitle UPDATE Special SET subtitle = json_object('de', subtitle, 'en', subtitle) WHERE subtitle IS NOT NULL AND typeof(subtitle) = 'text' AND subtitle NOT LIKE '{%'; -- Fix News.title UPDATE News SET title = json_object('de', title, 'en', title) WHERE typeof(title) = 'text' AND title NOT LIKE '{%'; -- Fix News.content UPDATE News SET content = json_object('de', content, 'en', content) WHERE typeof(content) = 'text' AND content NOT LIKE '{%'; -- Zeige Erfolg SELECT 'i18n-Daten wurden erfolgreich gefixt!' as status; EOF echo "📝 Kopiere SQL-Skript in Container..." docker cp "$SQL_SCRIPT" hoerdle:/tmp/fix-i18n.sql echo "🚀 Führe SQL-Befehle aus..." echo "" # Prüfe ob sqlite3 im Container verfügbar ist if docker exec hoerdle sh -c "command -v sqlite3" > /dev/null 2>&1; then docker exec hoerdle sqlite3 /app/data/prod.db < /tmp/fix-i18n.sql echo "" echo "✅ i18n-Daten wurden erfolgreich gefixt!" else echo "⚠️ sqlite3 nicht im Container gefunden. Verwende alternativen Ansatz..." # Versuche mit Node.js direkt SQL auszuführen cat > /tmp/fix-i18n-node.js << 'NODEJS' const fs = require('fs'); const DB_PATH = '/app/data/prod.db'; // Einfacher: Wir müssen sqlite3 im Container installieren oder einen anderen Weg finden console.log('⚠️ sqlite3 ist nicht verfügbar. Bitte installiere es im Container oder verwende einen anderen Ansatz.'); console.log(''); console.log('Alternativ: Kopiere die Datenbank lokal, fixe sie dort, und kopiere sie zurück.'); process.exit(1); NODEJS docker cp /tmp/fix-i18n-node.js hoerdle:/tmp/fix-i18n-node.js docker exec hoerdle node /tmp/fix-i18n-node.js || { echo "" echo "💡 Lösungsvorschlag:" echo "1. Kopiere die Datenbank lokal:" echo " docker cp hoerdle:/app/data/prod.db ./data/prod.db" echo "" echo "2. Führe dieses Skript lokal aus (mit sqlite3):" echo " sqlite3 ./data/prod.db < $SQL_SCRIPT" echo "" echo "3. Kopiere die gefixte DB zurück:" echo " docker cp ./data/prod.db hoerdle:/app/data/prod.db" echo "" echo "4. Starte Container neu:" echo " docker compose restart hoerdle" rm -f "$SQL_SCRIPT" exit 1 } fi rm -f "$SQL_SCRIPT" echo "" echo "🔄 Starte Container neu..." docker compose restart hoerdle 2>/dev/null || echo " (Bitte manuell: docker compose restart hoerdle)" echo "" echo "✅ Fertig! Prüfe die Logs:" echo " docker logs hoerdle --tail=50"