Ce projet utilise Prisma pour interagir avec la base de données PostgreSQL. Pour lancer la création de la base de données, remplissez d'abord la variable DATABASE_URL dans .env avec les identifiants de base de données. Puis, lancez la commande suivante pour construire la base de données :
yarn prisma:migrateEn cas de modification du schéma de données (dans schema.prisma), lancez la commande suivante et donnez un nom de migration en camelCase :
yarn prisma:migrate --create-onlyPour remplir la base avec des données de test, lancez :
yarn prisma:seedEn cas de besoin, la base de données peut être vidée avec :
yarn prisma:resetEnfin, vous pouvez vérifier le contenu de la base de données en exécutant :
yarn prisma:studioLe temps de développer la branche, il peut être utile d'utiliser l'outil de prototypage yarn prisma:push. Cela va venir faire évoluer la base en local mais ne générera pas les migrations, limitant ainsi le nombre de "micro migrations" associées à une PR.
Une fois que vous êtes satisfait et que vous voulez agréger vos modifications dans une migration, vous pouvez lancer la commande suivante :
yarn prisma:reset
yarn prisma:migrate:name <nom_migration>Vous pouvez ensuite comparer qu'un dossier de migration a été créé avec son fichier (non vide) migration.sql et vérifier les opérations.
Enfin vous pouvez lancer le déploiement :
yarn prisma:deployÀ chaque évolution du schéma, vous devez également mettre à jour :
- Le seeder associé dans
src/prisma/seeders - Le type dans
src/typeset danssrc/app/api/structures
Les vues sont créées afin de servir facilement différents outils (front de Bhasile, Metabase) avec les mêmes objets. Elles ne sont pas matérialisées et sont donc systématiquement à jour.
Les vues sont créées en post-deploiement avec la commande
yarn prisma:apply-viewsEn local elles peuvent l'être avec :
yarn prisma:apply-views:devElles pointent vers un schéma différent (par défaut reporting) afin de bien gérer la séparation "remplissage de la base de données" sur public et ses vues agrégées sur reporting.
Si vous souhaitez ajouter une vue, vous pouvez le faire dans scripts/views/ sous la forme d'un fichier SQL
yarn sql:format:check # Pour vérifier simplement le bon formattage
yarn sql:format:fix # Pour le réglerPrisma a récemment introduit le principe de views (encore en preview)
Cela nécessite :
- L'ajout d'une fonctionnalité
viewsdanspreviewFeatures - L'ajout des schémas par table dans
datasource.schemas(si on gère différents schémas)
L'ordre est le suivant :
- Modification éventuelle des tables du schema et migration prisma classique
- Ajout de vues dans le dossier puis exécution via
yarn prisma:apply-views- Ajout des vues au schéma prisma (à la main)
- Les vues sont en lecture seule dans Prisma Client
- L'introspection (
npx prisma db pull) peut être utilisée pour générer les blocsview, mais attention aux fichiers.sqlgénérés automatiquement et auprisma.schemamodifié automatiquement - Éviter de commit les fichiers générés si on utilise l'introspection
Pour aller plus loin avec Prisma : 👉 Source