|
## Fonctionnement
|
|
## Fonctionnement
|
|
|
|
|
|
## Installation
|
|
Le processus de migration implémenté repose sur la librairie [migrate](https://www.npmjs.com/package/migrate) qui propose un fonctionnement simple avec une logique de UP et DOWN. Cette librairie est agnostique du type de BDD.
|
|
|
|
|
|
|
|
Les fichiers responsables des migrations se trouvent aux emplacements suivant :
|
|
|
|
```sh
|
|
|
|
src/migrations # Dossier contenant les fichers de migration
|
|
|
|
src/migrations-utils # Dossier contenant les utilitaires et template
|
|
|
|
```
|
|
|
|
|
|
|
|
Voici les étapes a réaliser pour créer un script de migration :
|
|
|
|
1. Créer un nouveau fichier de migration basé sur le template défini.
|
|
|
|
|
|
|
|
```sh
|
|
|
|
npm run migrate:create -- <migration name>
|
|
|
|
```
|
|
|
|
|
|
|
|
Un fichier sera ajouter au dossier `src/migrations`.
|
|
|
|
|
|
|
|
2. Remplir la logique 'up' du script
|
|
|
|
3. Remplir la logique 'down' du script
|
|
|
|
|
|
|
|
Pour tester la migration il suffit d'exécuter la commande suivante :
|
|
|
|
```
|
|
|
|
npm run migrate:up
|
|
|
|
```
|
|
|
|
|
|
|
|
De même pour tester le rollback :
|
|
|
|
```
|
|
|
|
npm run migrate:down
|
|
|
|
```
|
|
|
|
|
|
|
|
Un fichier `.migrate` va être crée a la racine. Celui-ci ne doit pas être commit. Il correspond a l'état courant de la migration.
|
|
|
|
|
|
|
|
NB: Lors des phases de tests si l'on veut exécuter plusieurs `migrate:up` de suite, il faut penser a supprimer le ficher `.migrate`. Si l'état de la migration est 'terminé', le script ne sera pas réexécuté.
|
|
|
|
|
|
|
|
Exemple de fichier :
|
|
|
|
|
|
|
|
```json
|
|
|
|
{
|
|
|
|
"lastRun": "1605197159478-test.ts",
|
|
|
|
"migrations": [
|
|
|
|
{
|
|
|
|
"title": "1605197159478-test.ts",
|
|
|
|
"timestamp": 1605197181474
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
## Opérationnel
|
|
## Opérationnel
|
|
|
|
|
|
|
|
Les fichiers de migration étant contenu dans les sources, ils sont automatiquement embarqués dans le build des images docker. Il suffit donc de réaliser un backup de la base de donnée avant d'effectuer l'étape de migration par le biais de la commande :
|
|
|
|
```
|
|
|
|
docker exec -it ram_service-ram_1 bash # Connexion au container
|
|
|
|
npm run migrate:up
|
|
|
|
``` |
|
|
|
\ No newline at end of file |