Modification de base de données
Lors du développement de nouvelles fonctionnalités, ou de la refactorisation de celles existantes, il est parfois inévitable de modifier les schémas de base de données.
Les choses peuvent sembler effrayantes, en tant qu'utilisateur, vous devez généralement :
- Vérifier la différence entre deux versions ou plus
- Modifier la base de données de manière sûre et rétrocompatible
- Se préparer à une éventuelle défaillance, par exemple avoir un script de retour en arrière
- Remplacer progressivement les instances Logto en cours d'exécution par la nouvelle version
Hé, nous sommes aussi des développeurs, et nous savons qu'il est désagréable de faire toutes ces choses risquées mais obligatoires. Alors pourquoi ne pas les confier à quelqu'un qui ne fera pas d'erreur, comme un CLI ?
Désormais, votre processus de mise à niveau sera :
- Exécutez
logto db alt deploy
depuis n'importe où pouvant accéder à la base de données - Remplacez progressivement les instances Logto en cours d'exécution par la nouvelle version
Commençons !
Déterminer la version à déployer
Si vous avez installé Logto CLI globalement, il est fortement recommandé de mettre à jour le CLI vers la dernière version avant de déployer pour obtenir toutes les modifications de base de données disponibles. Ensuite, exécutez la commande :
- CLI
- npx
logto db alteration deploy
npx @logto/cli db alteration deploy
Si votre base de données est à jour, vous verrez le message ci-dessous :
[info] Found 0 alteration to deploy
Si vous avez des modifications non déployées, le CLI vous demandera de choisir la version souhaitée :
? Choose the alteration target version (Use arrow keys)
> 1.2.0
1.0.0
Théoriquement, la version à déployer devrait correspondre à la version de votre instance Logto. En attendant, vous pouvez utiliser la commande avec une version cible :
- CLI
- npx
logto db alteration deploy 1.2.0
npx @logto/cli db alteration deploy 1.2.0
C'est utile lorsque vous souhaitez effectuer la modification dans un pipeline non-TTY, n'oubliez pas de passer l'URL de la base de données en utilisant --db-url
. Voir Déploiement et configuration pour configurer un travail de modification dans votre cluster.
Pour chaque script de modification, le Logto CLI exécutera l'ensemble du script dans une transaction. Donc, si un déploiement échoue, vous pouvez facilement continuer avec la même commande après avoir corrigé le problème.
Annuler les modifications
Nos scripts de modification sont également accompagnés d'un script down
qui peut annuler les modifications. Pour revenir à l'état de la base de données à une version spécifique, remplacez 1.0.0
par votre version cible et exécutez la commande ci-dessous :
- CLI
- npx
logto db alteration rollback 1.0.0
npx @logto/cli db alteration rollback 1.0.0
Vous pouvez trouver tous les scripts de modification dans ce répertoire.
Pour les contributeurs
La branche master du dépôt Logto peut contenir des scripts de modification non publiés. Vous devrez peut-être déployer manuellement les modifications "next" en exécutant :
- CLI
- npx
logto db alteration deploy next
npx @logto/cli db alteration deploy next
Si vous développez une fonctionnalité nécessitant des modifications de base de données, plutôt que de mettre à jour le schéma de la base de données, vous devez également fournir un script au format suivant :
next-[timestamp]-what-to-do.ts
Consultez ce répertoire pour référence.