メインコンテンツまでスキップ

マイグレーションガイド: v1.2.0

このガイドはv1.1.xからv1.2.0へのアップグレードを支援します。v1.2.0にはコード更新が必要な1つの破壊的変更が含まれています。

リリース日

2026-04-02

破壊的変更の概要

変更内容影響必要なアクション
publishSync / publishPartialUpdateSync ノーオペレーション時にnullを返す戻り値の型がPromise<CommandModel | null>に変更結果を使用する前にnullチェックを追加

移行前チェックリスト

アップグレード前に以下を確認してください:

  • publishSync()publishPartialUpdateSync()の呼び出しを検索し、nullチェックを追加
  • アップグレード後にフルテストスイートを実行

破壊的変更1: publishSyncがノーオペレーション時にnullを返す

変更内容

publishSync()publishPartialUpdateSync() コマンドがダーティでない場合(ペイロードが既存バージョンと同一の場合)にnullを返すようになりました。これによりpublishAsync()およびpublishPartialUpdateAsync()の動作と一致します。

// Before (v1.1.x) — 戻り値の型: Promise<CommandModel>
const result = await commandService.publishSync(input, options);
console.log(result.pk); // 常に安全

// After (v1.2.0) — 戻り値の型: Promise<CommandModel | null>
const result = await commandService.publishSync(input, options);
if (result) {
console.log(result.pk); // nullチェック後のみアクセス可能
}

移行手順

ステップ1: すべての使用箇所を検索

grep -rn "publishSync\|publishPartialUpdateSync" --include="*.ts" src/

ステップ2: nullチェックを追加

各呼び出し箇所で、プロパティにアクセスする前に結果をnullチェックでラップします:

// パターン1: ノーオペレーション時の早期リターン
const result = await commandService.publishSync(input, options);
if (!result) return; // ノーオペレーション — データは変更されていない
// ... use result

// パターン2: 条件付き処理
const result = await commandService.publishSync(input, options);
if (result) {
await notifyUser(result.pk, result.sk);
}

この変更の理由

publishSyncは以前publishAsyncと動作が不一致でした — 非同期バリアントはすでにノーオペレーション時にnullを返していました。この変更により4つのpublishメソッドすべての動作が一貫し、書き込みが発生しない場合でもpublishSyncが既存のレコードを返していた紛らわしい動作を解消します。

アップグレード手順

Step 1: 依存関係を更新

npm install \
@mbc-cqrs-serverless/core@^1.2.0 \
@mbc-cqrs-serverless/tenant@^1.2.0 \
@mbc-cqrs-serverless/master@^1.2.0 \
@mbc-cqrs-serverless/sequence@^1.2.0 \
@mbc-cqrs-serverless/task@^1.2.0 \
@mbc-cqrs-serverless/cli@^1.2.0

Step 2: コードの修正を適用

  1. publishSyncpublishPartialUpdateSyncの結果にnullチェックを追加(上記参照)

Step 3: テストを実行

npm run test:cov

v1.2.0 の新機能

  • Read-Your-Writes (RYW) 一貫性publishAsync後、同じユーザーによる後続の読み取りが、DynamoDB Streamの同期が完了する前に保留中のコマンドデータを返します。RYW_SESSION_TTL_MINUTES環境変数でオプトイン。セットアップはCommandService: Read-Your-Writesを参照。

サポート

移行中に問題が発生した場合:

関連ドキュメント