マイグレーションガイド: 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; // ノーオペレーション — データは変更されていない
// ... 結果を使用する
// パターン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: コードの修正を適用
publishSyncとpublishPartialUpdateSyncの結果に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を参照。
サポート
移行中に問題が発生した場合:
関連ドキュメント
- 変更履歴 v1.2.0
- CommandService - publishSyncとpublishPartialUpdateSync API
- シーケンスモジュール - generateSequenceItem API