118 lines
3.1 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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.