@serverless-seoul/dynamorm-stream
Version:
DynamoDB Stream Framework
51 lines (50 loc) • 1.64 kB
TypeScript
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>;
};