Files
hoerdle/scripts/fix-i18n-local.sh
Hördle Bot a80c14223b 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.
2025-12-01 17:01:27 +01:00

98 lines
2.4 KiB
Bash
Executable File

#!/bin/bash
# Fix für i18n-Daten: Kopiert DB lokal, fixt sie, kopiert zurück
set -e
echo "🔧 Fixe i18n-Daten (lokal kopieren, fixen, zurück kopieren)..."
echo ""
# Prüfe ob Container läuft
if ! docker ps | grep -q hoerdle; then
echo "❌ Container 'hoerdle' läuft nicht!"
exit 1
fi
# Backup erstellen
BACKUP_FILE="./data/prod.db.backup.$(date +%Y%m%d_%H%M%S)"
echo "💾 Erstelle Backup..."
docker cp hoerdle:/app/data/prod.db "$BACKUP_FILE"
echo "✅ Backup erstellt: $BACKUP_FILE"
echo ""
# Kopiere DB lokal
echo "📥 Kopiere Datenbank lokal..."
docker cp hoerdle:/app/data/prod.db ./data/prod.db.tmp
echo "✅ Datenbank kopiert"
echo ""
# Prüfe ob sqlite3 verfügbar ist
if ! command -v sqlite3 &> /dev/null; then
echo "❌ sqlite3 ist nicht installiert!"
echo " Installiere es mit: sudo apt-get install sqlite3"
exit 1
fi
# Fixe die Datenbank
echo "🔧 Fixe i18n-Daten..."
sqlite3 ./data/prod.db.tmp << 'SQL'
-- Backup innerhalb der DB
.backup ./data/prod.db.tmp.backup
-- Fix Genre.name
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 '{%';
SELECT '✅ Alle i18n-Daten wurden gefixt!' as status;
SQL
if [ $? -ne 0 ]; then
echo "❌ Fehler beim Fixen der Datenbank!"
exit 1
fi
echo "✅ Datenbank gefixt"
echo ""
# Kopiere zurück
echo "📤 Kopiere gefixte Datenbank zurück..."
docker cp ./data/prod.db.tmp hoerdle:/app/data/prod.db
echo "✅ Datenbank zurück kopiert"
echo ""
# Aufräumen
rm -f ./data/prod.db.tmp ./data/prod.db.tmp.backup
echo "🔄 Starte Container neu..."
docker compose restart hoerdle
echo ""
echo "✅ Fertig! Prüfe die Logs:"
echo " docker logs hoerdle --tail=50"