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
Some checks failed
Deploy with Docker Compose / deploy (push) Has been cancelled
This commit is contained in:
70
scripts/README-MIGRATION.md
Normal file
70
scripts/README-MIGRATION.md
Normal 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`
|
||||
Reference in New Issue
Block a user