Implement PostgreSQL support and update database configuration: Migrate from SQLite to PostgreSQL by updating the Prisma schema, Docker configuration, and environment variables. Add PostgreSQL dependencies and adjust the database connection logic in the application. Enhance .gitignore to exclude PostgreSQL-related files and directories.
Some checks failed
Deploy with Docker Compose / deploy (push) Has been cancelled

This commit is contained in:
Julien Froidefond
2025-12-17 11:41:32 +01:00
parent 1f59cc7f9d
commit 8ad09ab9c8
45 changed files with 1238 additions and 109 deletions

View File

@@ -0,0 +1,70 @@
# Migration SQLite → PostgreSQL
Script pour migrer les données de SQLite vers PostgreSQL.
## Prérequis
1. Le container `got-app` doit être démarré
2. Le container `got-postgres` doit être démarré et accessible
3. Le fichier SQLite doit être accessible dans le container (par défaut: `/app/data/dev.db`)
## Utilisation
### Dans le container Docker
```bash
# IMPORTANT: Le script doit être exécuté depuis la racine du projet (/app)
# Option 1: Exécuter directement depuis l'extérieur du container
docker-compose exec got-app sh -c "cd /app && pnpm dlx tsx scripts/migrate-sqlite-to-postgres.ts"
# Option 2: Se connecter au container puis exécuter
docker-compose exec got-app sh
# Dans le container:
cd /app
pnpm dlx tsx scripts/migrate-sqlite-to-postgres.ts
```
### Variables d'environnement
Le script utilise les variables d'environnement suivantes :
- `SQLITE_DB_PATH` : Chemin vers le fichier SQLite (défaut: `/app/data/dev.db`)
- `DATABASE_URL` : URL de connexion PostgreSQL (défaut: depuis les variables d'env du container)
### Exemple avec variables personnalisées
```bash
docker-compose exec -e SQLITE_DB_PATH=/app/data/old.db got-app sh -c "cd /app && pnpm dlx tsx scripts/migrate-sqlite-to-postgres.ts"
```
## Ce que fait le script
1. **Se connecte** à SQLite (lecture seule) et PostgreSQL
2. **Migre les données** dans l'ordre des dépendances :
- Users
- UserPreferences
- Events
- EventRegistrations
- EventFeedbacks
- SitePreferences
- Challenges
3. **Utilise `upsert`** pour éviter les doublons (idempotent)
4. **Affiche la progression** en temps réel
5. **Affiche un résumé** à la fin avec les statistiques
## Notes importantes
- Le script est **idempotent** : tu peux le relancer plusieurs fois sans problème
- Les données existantes dans PostgreSQL seront **mises à jour** si elles existent déjà
- Les **erreurs** sont affichées mais n'arrêtent pas la migration
- Le script utilise `better-sqlite3` en **lecture seule** pour SQLite
## En cas d'erreur
Si le script échoue :
1. Vérifie que les containers sont démarrés : `docker-compose ps`
2. Vérifie que le fichier SQLite existe : `docker-compose exec got-app ls -la /app/data/dev.db`
3. Vérifie les logs PostgreSQL : `docker-compose logs got-postgres`
4. Vérifie la connexion PostgreSQL : `docker-compose exec got-app pnpm prisma db pull`