シリアライズヘルパー関数
概要
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