Files
noteflow/MIGRATION-STEPS.md
T
Claude 8251136faf Docs: Quick start PostgreSQL migration
Ajout des outils de migration et documentation:
- scripts/verify-postgres-connection.js: Test connexion PostgreSQL
- scripts/run-migration.sh: Script automatique de migration
- docker-compose.yml: Volume mount pour accès SQLite depuis container
- MIGRATION-STEPS.md: Guide pas-à-pas complet de migration

La migration peut maintenant être lancée avec:
  docker-compose build notes-app
  docker-compose up -d
  bash scripts/run-migration.sh
2025-11-14 08:37:01 +00:00

4.9 KiB

Migration SQLite → PostgreSQL - Instructions

✅ Ce qui a été préparé

  1. Docker-compose configuré avec PostgreSQL sur port 5499
  2. Scripts de migration créés et prêts
  3. Configuration PostgreSQL complète dans config/database-postgres.js
  4. Volume monté pour accéder à la base SQLite depuis le container

🚀 Étapes de migration

Option A: Script automatique (RECOMMANDÉ)

# 1. Reconstruire l'image Docker avec les nouvelles dépendances
docker-compose build notes-app

# 2. Démarrer les containers
docker-compose up -d

# 3. Attendre que PostgreSQL soit prêt (30 secondes)
docker-compose logs -f postgres | grep "ready to accept connections"
# Appuyez sur Ctrl+C quand vous voyez le message

# 4. Lancer la migration automatique
bash scripts/run-migration.sh

Option B: Commandes manuelles

# 1. Reconstruire et démarrer
docker-compose build notes-app
docker-compose up -d

# 2. Vérifier que PostgreSQL est accessible
docker exec notes-todo-app node scripts/verify-postgres-connection.js

# 3. Lancer la migration
docker exec -e SQLITE_PATH=/app/data-sqlite/notes.db \
  notes-todo-app node scripts/migrate-sqlite-to-postgres.js

# 4. Vérifier les données migrées
docker exec noteflow-postgres psql -U noteflow -d noteflow -p 5499 \
  -c "SELECT COUNT(*) FROM rss_articles;"

🔍 Vérification après migration

Vérifier les articles RSS

# Compter les articles dans PostgreSQL
docker exec notes-todo-app node -e "
const { Pool } = require('pg');
const pool = new Pool({
  connectionString: process.env.DATABASE_URL
});
pool.query('SELECT COUNT(*) FROM rss_articles').then(r => {
  console.log('Articles RSS:', r.rows[0].count);
  pool.end();
});
"

Vérifier les flux RSS

# Compter les flux configurés
docker exec notes-todo-app node -e "
const { Pool } = require('pg');
const pool = new Pool({
  connectionString: process.env.DATABASE_URL
});
pool.query('SELECT COUNT(*) FROM rss_feeds').then(r => {
  console.log('Flux RSS:', r.rows[0].count);
  pool.end();
});
"

🎯 Test du système RSS

1. Forcer une mise à jour des flux

# Exécuter manuellement le scheduler RSS
docker exec notes-todo-app node services/rss-scheduler-v2.js

2. Vérifier dans l'interface web

Ouvrez votre navigateur sur http://localhost:2222 et vérifiez:

  • Les articles RSS s'affichent
  • Les nouveaux articles apparaissent (pas seulement ceux du 12 nov)
  • L'auto-refresh fonctionne (2 minutes)

📊 Logs et diagnostic

Voir les logs du container

# Logs de l'application
docker-compose logs -f notes-app

# Logs PostgreSQL
docker-compose logs -f postgres

Entrer dans le container pour debug

# Shell dans le container
docker exec -it notes-todo-app sh

# Puis dans le container:
node -e "console.log(process.env.DATABASE_URL)"
ls -la /app/data-sqlite/

🧹 Nettoyage après migration réussie

Une fois que TOUT fonctionne parfaitement:

# Sauvegarder l'ancienne base SQLite
cp data/notes.db data/notes.db.backup-$(date +%Y%m%d)

# Optionnel: Supprimer l'ancienne base
# rm data/notes.db

❌ En cas de problème

Problème: Container ne démarre pas

# Voir les erreurs
docker-compose logs notes-app

# Reconstruire proprement
docker-compose down
docker-compose build --no-cache notes-app
docker-compose up -d

Problème: Connexion PostgreSQL refusée

# Vérifier que PostgreSQL écoute sur le bon port
docker exec noteflow-postgres netstat -tlnp | grep 5499

# Vérifier les variables d'environnement
docker exec notes-todo-app env | grep DATABASE

Problème: Migration échoue

# Vérifier que le fichier SQLite est accessible
docker exec notes-todo-app ls -la /app/data-sqlite/notes.db

# Relancer avec plus de détails
docker exec -e SQLITE_PATH=/app/data-sqlite/notes.db \
  notes-todo-app node scripts/migrate-sqlite-to-postgres.js

🔄 Rollback vers SQLite

Si vous voulez revenir à SQLite temporairement:

  1. Arrêter les containers: docker-compose down
  2. Modifier docker-compose.yml: commenter la section postgres
  3. Modifier l'environnement de notes-app pour utiliser SQLite
  4. Redémarrer: docker-compose up -d

📝 Notes importantes

  • La base SQLite est montée en lecture seule (:ro) pour éviter les modifications accidentelles
  • Le container PostgreSQL utilise un volume persistant postgres_data
  • Les données ne sont PAS perdues si vous redémarrez les containers
  • Le port 5499 est exposé sur le host pour debug si besoin

🎉 Prochaine étape

Une fois la migration réussie, consultez:

  • QUICK-START-POSTGRES.md pour l'utilisation quotidienne
  • MIGRATION-POSTGRESQL.md pour la documentation technique complète