From a2e01a9537f80ceb76be24c4de138d5f55de196c Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 14 Nov 2025 09:52:23 +0000 Subject: [PATCH] Scripts: Restauration SQLite et migration PostgreSQL MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ajout de 2 scripts interactifs pour gérer les données: 1. scripts/restore-sqlite.sh - Restauration rapide de SQLite (1 commande) - Désactive PostgreSQL automatiquement - Redémarre avec les données originales 2. scripts/switch-to-postgres.sh - Migration complète vers PostgreSQL - Backup automatique de SQLite - Migration et vérification des données - Rollback possible si erreur Usage: bash scripts/restore-sqlite.sh # Récupération rapide bash scripts/switch-to-postgres.sh # Migration complète Les deux scripts sont interactifs avec confirmation. --- scripts/restore-sqlite.sh | 57 +++++++++++++++++++++++ scripts/switch-to-postgres.sh | 87 +++++++++++++++++++++++++++++++++++ 2 files changed, 144 insertions(+) create mode 100755 scripts/restore-sqlite.sh create mode 100755 scripts/switch-to-postgres.sh diff --git a/scripts/restore-sqlite.sh b/scripts/restore-sqlite.sh new file mode 100755 index 0000000..8cdb5ac --- /dev/null +++ b/scripts/restore-sqlite.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +echo "" +echo "🔄 RESTAURATION SQLITE - Récupération rapide des données" +echo "═══════════════════════════════════════════════════════" +echo "" +echo "Cette opération va:" +echo " 1. Arrêter PostgreSQL" +echo " 2. Reconfigurer l'application pour SQLite" +echo " 3. Redémarrer avec vos données originales" +echo "" +read -p "Continuer? (o/N) " -n 1 -r +echo +if [[ ! $REPLY =~ ^[Oo]$ ]]; then + echo "❌ Annulé" + exit 1 +fi + +echo "" +echo "📋 Étape 1/3: Arrêt des containers..." +docker-compose down + +echo "" +echo "📋 Étape 2/3: Modification docker-compose.yml..." + +# Commenter les lignes PostgreSQL dans docker-compose.yml +sed -i 's|^ - DATABASE_URL=|# - DATABASE_URL=|g' docker-compose.yml +sed -i 's|^ - DB_TYPE=postgres|# - DB_TYPE=postgres|g' docker-compose.yml + +echo " ✅ Configuration SQLite activée" + +echo "" +echo "📋 Étape 3/3: Redémarrage avec SQLite..." +docker-compose build notes-app +docker-compose up -d + +echo "" +echo "⏳ Attente du démarrage (10 secondes)..." +sleep 10 + +echo "" +echo "═══════════════════════════════════════════════════════" +echo "✅ RESTAURATION TERMINÉE!" +echo "" +echo "Vos données SQLite sont maintenant actives." +echo "" +echo "🔍 Vérification:" +docker-compose logs notes-app | grep -i "database\|sqlite" | tail -3 +echo "" +echo "🌐 Accédez à votre application:" +echo " http://localhost:2222" +echo "" +echo "📊 Pour vérifier les données:" +echo " node scripts/check-data.js" +echo "" +echo "═══════════════════════════════════════════════════════" +echo "" diff --git a/scripts/switch-to-postgres.sh b/scripts/switch-to-postgres.sh new file mode 100755 index 0000000..44ab80d --- /dev/null +++ b/scripts/switch-to-postgres.sh @@ -0,0 +1,87 @@ +#!/bin/bash + +echo "" +echo "🐘 MIGRATION VERS POSTGRESQL" +echo "═══════════════════════════════════════════════════════" +echo "" +echo "Cette opération va:" +echo " 1. Activer PostgreSQL" +echo " 2. Migrer toutes vos données SQLite → PostgreSQL" +echo " 3. Reconfigurer l'application" +echo "" +echo "⚠️ IMPORTANT:" +echo " - La base SQLite sera conservée (backup automatique)" +echo " - La migration prend environ 1-2 minutes" +echo " - Vos données ne seront PAS supprimées" +echo "" +read -p "Continuer? (o/N) " -n 1 -r +echo +if [[ ! $REPLY =~ ^[Oo]$ ]]; then + echo "❌ Annulé" + exit 1 +fi + +echo "" +echo "📋 Étape 1/5: Sauvegarde de la base SQLite..." +cp data/notes.db data/notes.db.backup-$(date +%Y%m%d-%H%M%S) +echo " ✅ Backup créé: data/notes.db.backup-*" + +echo "" +echo "📋 Étape 2/5: Activation de PostgreSQL..." + +# Décommenter les lignes PostgreSQL +sed -i 's|^# - DATABASE_URL=| - DATABASE_URL=|g' docker-compose.yml +sed -i 's|^# - DB_TYPE=postgres| - DB_TYPE=postgres|g' docker-compose.yml + +echo " ✅ Configuration PostgreSQL activée" + +echo "" +echo "📋 Étape 3/5: Redémarrage des containers..." +docker-compose down +docker-compose build notes-app +docker-compose up -d + +echo "" +echo "📋 Étape 4/5: Attente démarrage PostgreSQL..." +for i in {1..30}; do + if docker exec noteflow-postgres pg_isready -U noteflow -d noteflow -p 5499 >/dev/null 2>&1; then + echo " ✅ PostgreSQL prêt" + break + fi + echo -n "." + sleep 1 +done +echo "" + +echo "" +echo "📋 Étape 5/5: Migration des données..." +docker exec -e SQLITE_PATH=/app/data-sqlite/notes.db notes-todo-app node scripts/migrate-sqlite-to-postgres.js + +if [ $? -eq 0 ]; then + echo "" + echo "═══════════════════════════════════════════════════════" + echo "✅ MIGRATION RÉUSSIE!" + echo "" + echo "PostgreSQL est maintenant actif avec toutes vos données." + echo "" + echo "🔍 Vérification:" + node scripts/check-data.js + echo "" + echo "🌐 Accédez à votre application:" + echo " http://localhost:2222" + echo "" + echo "📦 Backup SQLite disponible dans:" + echo " data/notes.db.backup-*" + echo "" + echo "═══════════════════════════════════════════════════════" +else + echo "" + echo "❌ ERREUR LORS DE LA MIGRATION" + echo "" + echo "Pour revenir à SQLite:" + echo " bash scripts/restore-sqlite.sh" + echo "" + echo "Logs d'erreur:" + docker-compose logs notes-app | tail -20 +fi +echo ""