118 lines
3.1 KiB
Markdown
118 lines
3.1 KiB
Markdown
|
||
|
||
# PtitsPas Ynov - Base de Données
|
||
|
||
Ce projet contient la **base de données** pour l'application PtitsPas, avec scripts de migration, import de données, documentation et configuration Docker.
|
||
|
||
---
|
||
|
||
## Prérequis
|
||
|
||
- Docker Desktop (https://www.docker.com/products/docker-desktop/)
|
||
- Docker Compose
|
||
|
||
---
|
||
|
||
## Structure du projet
|
||
|
||
- `migrations/` : scripts SQL pour la création et l'import de la base
|
||
- `bdd/data_test/` : fichiers CSV pour l'import de données de test
|
||
- `docs/` : documentation métier et technique
|
||
- `seed/` : scripts de seed
|
||
- `tests/` : tests SQL
|
||
- `docker-compose.dev.yml` : configuration Docker pour le développement
|
||
|
||
---
|
||
|
||
## Lancer la base de données en local
|
||
|
||
Dans le terminal, depuis le dossier du projet :
|
||
|
||
```bash
|
||
make demo
|
||
```
|
||
|
||
Pour arrêter et supprimer les volumes :
|
||
|
||
```bash
|
||
make stop
|
||
```
|
||
|
||
---
|
||
|
||
## Importation automatique des données de test
|
||
|
||
Les données de test (CSV) sont automatiquement importées dans la base au démarrage du conteneur Docker grâce aux scripts présents dans le dossier `migrations/`.
|
||
|
||
Il n'est pas nécessaire de lancer manuellement le script d'import.
|
||
|
||
---
|
||
|
||
## Accéder à pgAdmin4
|
||
|
||
### Via Docker (local)
|
||
|
||
Ouvre ton navigateur sur :
|
||
|
||
```
|
||
http://localhost:8081
|
||
```
|
||
|
||
Par défaut un administrateur est créé par la migration d'initialisation (`migrations/01_init.sql`).
|
||
Pour des raisons de sécurité, le mot de passe n'est pas gardé en clair dans le README.
|
||
|
||
Si tu veux un mot de passe connu en dev, génère le hash bcrypt puis modifie la migration
|
||
ou crée un seed SQL :
|
||
|
||
```sql
|
||
-- Exemple pour définir le mot de passe en dev :
|
||
UPDATE utilisateurs
|
||
SET password = crypt('admin123', gen_salt('bf'))
|
||
WHERE email = 'admin@ptits-pas.fr';
|
||
```
|
||
|
||
Exécute la commande suivante pour appliquer ce seed sur ta base dev :
|
||
|
||
```bash
|
||
docker exec -i ptitspas-postgres-standalone psql -U admin -d ptitpas_db -c "UPDATE utilisateurs SET password = crypt('admin123', gen_salt('bf')) WHERE email = 'admin@ptits-pas.fr';"
|
||
```
|
||
|
||
|
||
## Conseils et bonnes pratiques
|
||
|
||
- Vérifie la cohérence des identifiants dans les CSV avant import
|
||
- Pour modifier la structure, utilise les scripts de migration dans `migrations/`
|
||
- Pour ajouter des scripts d'automatisation, crée un dossier `scripts/`
|
||
- Documente les étapes spécifiques dans le README ou dans `docs/`
|
||
|
||
### Synchroniser les types ENUM avec les CSV d'import
|
||
|
||
Un utilitaire est fourni pour générer une migration sûre qui ajoute les valeurs
|
||
manquantes aux types ENUM en base en se basant sur les CSV présents dans
|
||
`bdd/data_test/`.
|
||
|
||
Générer la migration :
|
||
|
||
```bash
|
||
make sync-enums
|
||
```
|
||
|
||
Le fichier généré est `migrations/00_sync_enums.sql`. Relis ce fichier avant de
|
||
l'appliquer (il contient des blocs `DO $$ ... ALTER TYPE ... ADD VALUE` qui
|
||
ne suppriment rien mais modifient le type ENUM). Pour appliquer la migration
|
||
sur ta base locale :
|
||
|
||
```bash
|
||
# Après avoir démarré la base (make reset ou make demo)
|
||
docker exec -i ptitspas-postgres-standalone psql -U admin -d ptitpas_db -f migrations/00_sync_enums.sql
|
||
```
|
||
|
||
Attention : ne pas appliquer directement en production sans vérification.
|
||
|
||
---
|
||
|
||
## Contact
|
||
|
||
Pour toute question ou contribution, consulte la documentation ou contacte l'équipe PtitsPas.
|
||
|