UNPKG

@serverless-seoul/dynamorm-stream

Version:
51 lines (50 loc) 1.64 kB
import { Metadata, Table } from "@serverless-seoul/dynamorm"; import type { DynamoDBStreamEvent } from "./dynamodb_stream_event"; export interface InsertStreamEvent<T> { type: "INSERT"; newRecord: T; } export interface ModifyStreamEvent<T> { type: "MODIFY"; oldRecord: T; newRecord: T; } export interface RemoveStreamEvent<T> { type: "REMOVE"; oldRecord: T; } export declare type StreamEvent<T> = (InsertStreamEvent<T> | ModifyStreamEvent<T> | RemoveStreamEvent<T>); export interface ITable<T extends Table> { metadata: Metadata.Table.Metadata; new (): T; } export declare function parseEvent<T extends Table>(tableClass: ITable<T>, event: DynamoDBStreamEvent): StreamEvent<T>[]; export declare type HandlerDefinition<T> = { eventType: "INSERT"; name: string; handler: (events: InsertStreamEvent<T>[]) => Promise<void>; } | { eventType: "MODIFY"; name: string; handler: (events: ModifyStreamEvent<T>[]) => Promise<void>; } | { eventType: "REMOVE"; name: string; handler: (events: RemoveStreamEvent<T>[]) => Promise<void>; } | { eventType: "INSERT, MODIFY"; name: string; handler: (events: (InsertStreamEvent<T> | ModifyStreamEvent<T>)[]) => Promise<void>; } | { eventType: "MODIFY, REMOVE"; name: string; handler: (events: (ModifyStreamEvent<T> | RemoveStreamEvent<T>)[]) => Promise<void>; } | { eventType: "INSERT, REMOVE"; name: string; handler: (events: (InsertStreamEvent<T> | RemoveStreamEvent<T>)[]) => Promise<void>; } | { eventType: "ALL"; name: string; handler: (events: StreamEvent<T>[]) => Promise<void>; };