Skip to content

Latest commit

 

History

History
131 lines (85 loc) · 4.38 KB

File metadata and controls

131 lines (85 loc) · 4.38 KB

Base de données Bhasile

🧱 Construction de la base de données

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:migrate

En 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-only

Pour remplir la base avec des données de test, lancez :

yarn prisma:seed

En cas de besoin, la base de données peut être vidée avec :

yarn prisma:reset

Enfin, vous pouvez vérifier le contenu de la base de données en exécutant :

yarn prisma:studio

🪿 Focus sur les migrations

Le 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

Évolution du schéma

À chaque évolution du schéma, vous devez également mettre à jour :

  • Le seeder associé dans src/prisma/seeders
  • Le type dans src/types et dans src/app/api/structures

👁️‍🗨️ Vues SQL

Pourquoi des vues ?

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.

Création des vues

Les vues sont créées en post-deploiement avec la commande

yarn prisma:apply-views

En local elles peuvent l'être avec :

yarn prisma:apply-views:dev

Elles 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

⚠️ Le bon formattage des vues est testé avant tout commit, vous pouvez également le tester avec :

yarn sql:format:check # Pour vérifier simplement le bon formattage
yarn sql:format:fix   # Pour le régler

Vues sur Prisma

Prisma a récemment introduit le principe de views (encore en preview)

Cela nécessite :

  • L'ajout d'une fonctionnalité views dans previewFeatures
  • L'ajout des schémas par table dans datasource.schemas (si on gère différents schémas)

Process recommandé

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)

Notes importantes

  • Les vues sont en lecture seule dans Prisma Client
  • L'introspection (npx prisma db pull) peut être utilisée pour générer les blocs view, mais attention aux fichiers .sql générés automatiquement et au prisma.schema modifié automatiquement
  • Éviter de commit les fichiers générés si on utilise l'introspection

Pour aller plus loin avec Prisma : 👉 Source