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

CommandService

説明

このサービスのメソッドは主にコマンド テーブルを操作するために使用されます。

以下のメソッドの例では、次のように CommandModule をモジュールにインポートすると仮定します。

import { CommandModule } from "@mbc-cqrs-serverless/core";
import { Module } from "@nestjs/common";

import { CatDataSyncRdsHandler } from "./handler/cat-rds.handler";
import { CatController } from "./cat.controller";
import { CatService } from "./cat.service";

@Module({
imports: [
CommandModule.register({
tableName: "cat",
dataSyncHandlers: [CatDataSyncRdsHandler],
}),
],
controllers: [CatController],
providers: [CatService],
})
export class CatModule {}

これで、CommandServiceDataService を他のサービスに挿入して使用できるようになります。

メソッド

async publish(input: CommandInputModel, opts: ICommandOptions)

このメソッドを使用すると、コマンド テーブルにデータが直接挿入されるため、完全なコマンドを公開できます。

たとえば、次のように新しい cat コマンドを発行できます。

import {
generateId,
getCommandSource,
VERSION_FIRST,
} from "@mbc-cqrs-serverless/core";

// ...

const catCommand = new CatCommandDto({
pk: catPk,
sk: catSk,
tenantCode,
id: generateId(catPk, catSk),
code,
type: "CAT",
name: attributes.name,
version: VERSION_FIRST,
attributes,
});

const commandSource = getCommandSource(
basename(__dirname),
this.constructor.name,
"createCatCommand"
);

const item = await this.commandService.publish(catCommand, {
source: commandSource,
invokeContext,
});

このメソッドはコマンド データを返します。

async publishPartialUpdate( input: CommandPartialInputModel, opts?: ICommandOptions)

このメソッドは、以前のコマンドに基づいて新しいコマンド データを発行します。

たとえば、猫の名前を更新するとします。

import {
generateId,
getCommandSource,
VERSION_FIRST,
} from '@mbc-cqrs-serverless/core'

// ...

const catCommand = new CatCommandDto({
pk: catPk,
sk: catSk,
tenantCode,
id: generateId(catPk, catSk),
code,
type: 'CAT',
name: attributes.name,
version: VERSION_FIRST,
attributes,
})

const commandSource = getCommandSource(
basename(__dirname),
this.constructor.name,
'createCatCommand',
)

const item = await this.commandService.publish(catCommand,{
source: commandSource,
invokeContext,
})

このメソッドはコマンド データを返します。

async reSyncData()

データ同期ハンドラーを再適用する場合は、このメソッドを使用できるように設計されています。次のように関数を呼び出すだけです。

await this.commandService.reSyncData();