mcpField
C
Create database migration

Create database migration

github.com/tryghostデータ・データベース55.6k87 回インストール今日更新
リポジトリ

Create database migration について

Create database migration は、Ghost リポジトリでのデータベース移行に使う実行可能なチェックリストです。標準ガイドと併せて、生成、スキーマ更新、ロールバックと再適用のテスト、関連確認を扱います。

主な機能

  1. 01移行ファイル生成の手順
  2. 02スキーマ同期の手順
  3. 03ロールバックと再適用のテスト
  4. 04エクスポーターのテーブル一覧更新
  5. 05移行テストの指針

活用シーン

  1. 01Ghost でのデータベース移行の追加
  2. 02移行に伴うスキーマ定義の更新
  3. 03ロールバックと移行動作の検証

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/tryghost/ghost --skill create-database-migration

インストール後、Claude Code で/create-database-migrationを入力して読み込まれたか確認します。

同梱ファイルexamples.mdrules.md

詳細

データベースマイグレーションの作成

マイグレーションを作成する前に、 docs/practices/database-migrations.md に記載されている正式な手順を確認してください。このスキルは、手順に付随する実行可能なチェックリストです。

手順

新しいテーブルを追加する場合で、まだ構造が変更される可能性があるなら、マイグレーションを作成せずに開発中としてマークすることを検討してください。ガイドの「開発中の新しいテーブル」を参照してください。

  1. リポジトリのルートから pnpm gx generate migration <kebab-case-slug> を実行して、新しい空のマイグレーションファイルを作成します。重要:マイグレーションファイルを手動で作成しないでください。必ずこのスクリプトを使って、最初の空のマイグレーションファイルを作成してください。スラッグは kebab-case にしてください(例:add-column-to-posts)。
  2. 上記のコマンドによって、必要に応じて ghost/core/server/data/migrations/versions に新しいディレクトリが作成され、適切な名前の空のマイグレーションファイルが作成されます。また、リリース後初のマイグレーションの場合は、core パッケージと admin パッケージのバージョンが RC に引き上げられます。
  3. コードベース内の既存パターンに従って、データベースに加える変更をマイグレーションファイルに記述します。適切な場合は、ghost/core/server/data/migrations/utils/* のユーティリティ関数を優先して使用してください。
  4. ghost/core/server/data/schema/schema.js のスキーマ定義ファイルを更新し、マイグレーションの最新の変更内容と一致していることを確認します。
  5. リポジトリのルートから手動でマイグレーションをテストします:pnpm knex-migrator migrate --v {version directory} --force
  6. down() をテストするためにマイグレーションをロールバックします:pnpm knex-migrator rollback --v {previous version} --force。その後、再度マイグレーションを実行します。
  7. 初期化、ロールバック、前進マイグレーション、冪等性を確認するマイグレーション統合テストを実行します:cd ghost && pnpm test:single test/integration/migrations/migration.test.js。MySQL が必要です。MySQL は pnpm dev で起動します。
  8. テーブルを追加または削除する場合は、必要に応じて ghost/core/server/data/exporter/table-lists.js を更新します。ghost/test/unit/server/data/exporter/index.test.js の整合性アサーションで、すべてのスキーマテーブルがエクスポーターのリストに分類されていることを確認します。
  9. テーブルリストを変更した場合は、対象を絞ったエクスポーターのユニットテストを実行します:cd ghost && pnpm test:single test/unit/server/data/exporter/index.test.js。
  10. スキーマを変更した場合は、スキーマ同期テストを実行します:cd ghost && pnpm test:single test/integration/migrations/schema-sync.test.ts。フィクスチャ、デフォルト設定、またはデフォルトルートを変更した場合は、データベース整合性テストを実行し、影響を受けるハッシュのみを更新します:cd ghost && pnpm test:single test/unit/server/data/schema/integrity.test.ts
  11. Ghost core のユニットテストを実行し、合格するまで修正を繰り返します:cd ghost && pnpm test:unit

例

マイグレーションの例については、examples.md を参照してください。

ルール

データベースマイグレーションの作成時に必ず従うべきルールについては、rules.md を参照してください。

コメント