トリガー
データベースの変更に応答して関数を実行します。
実行可能(executable)を作成するには、ベースの SquidService クラスを拡張したクラス内で、関数に @trigger デコレーターを付与します。
次の例は、組み込みデータベースの users データベースコレクションの変更時に実行されるトリガーを示しています。
Backend code
import { SquidService, trigger, TriggerRequest } from '@squidcloud/backend';
export class ExampleService extends SquidService {
@trigger('userChange', 'users')
async handleUserChange(request: TriggerRequest): Promise<void> {
// TODO - add your business logic here
}
}
関数が組み込みデータベース以外のデータベースによってトリガーされる場合、@trigger デコレーターの第3引数として integration ID を指定する必要があります。例えば次のとおりです。
Backend code
@trigger('userChange', 'users', 'HrDatabase') // id, collection, integration
トリガーは次のパラメータを受け取ります。
| 名前 | 型 | 説明 |
|---|---|---|
id | string | トリガーの id。ユニークである必要があります。 |
collectionName | string | トリガー対象の collection の名前。 |
integrationId? | string | トリガー対象の connector の id。指定しない場合は built_in_db が使用されます。 |
トリガーリクエストは、変更について次の情報を提供します。
{
squidDocId: SquidDocId; // ドキュメントの primary key
mutationType: MutationType; // 実行された操作の種類
docBefore?: T; // ドキュメントの変更前の状態
docAfter?: T; // ドキュメントの変更後の状態
}
詳細は、trigger decorator の API ドキュメント を参照してください。