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:
97
scripts/fix-i18n-local.sh
Executable file
97
scripts/fix-i18n-local.sh
Executable file
@@ -0,0 +1,97 @@
|
||||
#!/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"
|
||||
|
||||
Reference in New Issue
Block a user