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