データベース変更
新しい機能を開発したり、既存のものをリファクタリングしたりする際に、データベーススキーマを変更することが避けられない場合があります。
ユーザーとしては、通常次のことを行う必要があるため、少し怖いかもしれません:
- 2 つ以上のバージョンの違いを再確認する
- データベースを安全かつ後方互換性のある方法で変更する
- 潜在的な失敗に備えて、ロールバックスクリプトを用意する
- 実行中の Logto インスタンスを新しいバージョンに徐々に置き換える
私たちも開発者であり、これらのリスクのある必須作業を行うのが楽しくないことを知っています。 では、間違いを犯さない CLI のようなものに任せてみませんか?
これからは、アップグレードプロセスは次のようになります:
- データベースにアクセスできる場所から
logto db alt deploy
を実行する - 実行中の Logto インスタンスを新しいバージョンに徐々に置き換える
さあ、始めましょう!
デプロイするバージョンを決定する
Logto CLI をグローバルにインストールしている場合は、デプロイ前に CLI を最新バージョンにアップグレードして、利用可能なすべてのデータベース変更を取得することを 強くお勧めします。その後、次のコマンドを実行します:
- CLI
- npx
logto db alteration deploy
npx @logto/cli db alteration deploy
データベースが最新の場合、以下のメッセージが表示されます:
[info] デプロイする変更は 0 件見つかりました
未デプロイの変更がある場合、CLI は希望するバージョンを選択するよう求めます:
? 変更のターゲットバージョンを選択してください (矢印キーを使用)
> 1.2.0
1.0.0
理論的には、デプロイするバージョンは Logto インスタンスのバージョンと一致する必要があります。同時に、ターゲットバージョンを指定してコマンドを使用することもできます:
- CLI
- npx
logto db alteration deploy 1.2.0
npx @logto/cli db alteration deploy 1.2.0
TTY ではないパイプラインで変更を行いたい場合に便利です。--db-url
を使用してデータベース URL を渡すことを忘れないでください。クラスターで変更ジョブを設定するには、デプロイメントと設定 を参照してください。
各変更スクリプトについて、Logto CLI はトランザクション内でスクリプト全体を実行します。したがって、デプロイメントが失敗した場合、問題が解決した後に同じコマンドで簡単に続行できます。
変更のロールバック
私たちの変更スクリプトには、変更をロールバックできる down
スクリプトも付属しています。データベースの状態を特定のバージョンにロールバックするには、1.0.0
をターゲットバージョンに置き換えて、以下のコマンドを実行します:
- CLI
- npx
logto db alteration rollback 1.0.0
npx @logto/cli db alteration rollback 1.0.0
すべての変更スクリプトは このディレクトリ にあります。
コントリビューター向け
Logto リポジトリのマスターブランチには、未公開の変更スクリプトが含まれている場合があります。次のコマンドを実行して「次の」変更を手動でデプロイする必要があるかもしれません:
- CLI
- npx
logto db alteration deploy next
npx @logto/cli db alteration deploy next
データベース変更を必要とする機能を開発している場合、データベーススキーマを更新するだけでなく、次の形式でスクリプトを提供する必要があります:
next-[timestamp]-what-to-do.ts
参考のために このディレクトリ を確認してください。