Si vous travaillez sur une branche qui inclut une modification de la base de données (exemple : ajout d'une table, altération d'une colonne...), il peut être pratique d'utiliser une base de données spécifique à cette branche ("BDD de branche"). Cela permet de garder la base catalogage
en l'état si jamais vous deviez travailler à nouveau à partir de master
.
Pour ce faire, créez d'abord une copie de votre base de données comme suit :
createdb -T catalogage catalogage-toto
Si vous utilisez Docker Compose, vous devrez exécuter cette commande à l'intérieur du conteneur :
$ docker-compose exec postgresql createdb ...
.
Vous devez maintenant indiquer aux commandes make
d'utiliser cette base catalogage-toto
.
En principe, vous pourriez le faire en spécifiant une APP_DATABASE_URL
en entier (voir Configuration). Par exemple : $ APP_DATABASE_URL=asyncpg://localhost:5432/catalogage-toto make serve
. Mais c'est peut-être un peu lourd.
Nous vous proposons donc mieux : si vous avez créé un .env
à partir de .env.example
, votre APP_DATABASE_URL
acceptera par défaut une variable d'environnement DB
permettant de ne passer que le nom de la base de données le serveur doit s'adresser.
Vous pouvez alors indiquer aux commandes make
d'utiliser cette BDD de branche comme suit :
# Créer une migration à partir de la BDD de branche
DB=catalogage-toto name=add-some-table make migration
# Lancer les migrations sur la BDD de branche
DB=catalogage-toto make migrate
# Démarrer le serveur en utilisant la BDD de branche
DB=catalogage-toto make serve
Lorsque vous n'avez plus besoin de votre BDD de branche (par exemple quand celle-ci a été mergée), vous pouvez la supprimer :
dropdb catalogage-toto
En pratique, le processus est donc le suivant :
- Créer une branche
- Créer une BDD de branche à partir de votre BDD de développement principale.
- Utiliser
DB=... make ...
. - Supprimer cette BDD de branche lorsque vous n'en avez plus besoin.