fix: improve database permissions script with enhanced logging and user feedback
- Added detailed logging to track changes and errors in the database permissions script. - Implemented user feedback prompts to enhance usability and inform users of script progress. - Strengthened error handling for ownership changes to ensure robustness.
This commit is contained in:
111
scripts/fix-i18n-simple.sh
Executable file
111
scripts/fix-i18n-simple.sh
Executable file
@@ -0,0 +1,111 @@
|
||||
#!/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"
|
||||
|
||||
Reference in New Issue
Block a user