シリアライズヘルパー関数
概要
MBC CQRS Serverless フレームワークは、DynamoDBの内部構造と外部向けフラット構造の間の変換を行うヘルパー関数を提供します。これらのヘルパーは、型安全性を維持しながら一貫したデータ変換を保証します。
データ構造の変換
DynamoDBの内部構造
{
  pk: "PROJECT",
  sk: "123",
  name: "Test Project",
  attributes: {
    details: {
      status: "active",
      category: "development"
    }
  }
}
External Flat Structure
{
  id: "PROJECT#123",    // Combination of pk and sk
  code: "123",         // Mainly sk
  name: "Test Project", // First level in DynamoDB
  details: {           // Flattened from attributes
    status: "active",
    category: "development"
  }
}
使用方法
内部形式から外部形式への変換
import { serializeToExternal } from '@mbc-cqrs-serverless/core';
const internal = {
  pk: "PROJECT",
  sk: "123",
  name: "Test Project",
  attributes: {
    details: {
      status: "active",
      category: "development"
    }
  }
};
const external = serializeToExternal(internal);
外部形式から内部形式への変換
import { deserializeToInternal, CommandEntity } from '@mbc-cqrs-serverless/core';
const external = {
  id: "PROJECT#123",
  code: "123",
  name: "Test Project",
  details: {
    status: "active",
    category: "development"
  }
};
const internal = deserializeToInternal(external, CommandEntity);
APIリファレンス
serializeToExternal
function serializeToExternal<T extends CommandEntity | DataEntity>(
  item: T | null | undefined,
  options?: SerializerOptions
): Record<string, any> | null
パラメータ
item: 内部エンティティ(CommandEntityまたはDataEntity)options: オプションのシリアライズ設定keepAttributes: 出力にattributesフィールドを保持(デフォルト: false)flattenDepth: ネストされたオブジェクトのフラット化の最大深度(デフォルト: 無制限)
戻り値
- フラット化された外部構造、または入力がnull/undefinedの場合はnull
 
deserializeToInternal
function deserializeToInternal<T extends CommandEntity | DataEntity>(
  data: Record<string, any> | null | undefined,
  EntityClass: new () => T
): T | null
パラメータ
data: Entity class to instantiate (CommandEntity or DataEntity)EntityClass: インスタンス化するエンティティクラス(CommandEntityまたはDataEntity)
戻り値
- 内部エンティティのインスタンス、または入力がnull/undefinedの場合はnull