UNPKG

lemon-core

Version:
74 lines (73 loc) 2.57 kB
import { DynamoDBRecord } from 'aws-lambda'; import { NextHandler } from 'lemon-model'; import { LambdaHandler, DynamoStreamHandler, LambdaSubHandler } from './lambda-handler'; import { Elastic6Service, Elastic6Item } from '../elastic/'; import { DynamoOption } from '../dynamo/'; export declare type DynamoStreamEvent = DynamoDBRecord['eventName']; export interface DynamoStreamParam { region?: string; eventId?: string; eventName?: DynamoStreamEvent; tableName?: string; } export interface DynamoStreamBody<T = any> { /** * only for keys */ keys?: T; /** * fields to have different between old & new */ diff: string[]; /** * previous node with only in diff */ prev: T; /** * the latest node set. */ node: T; } export declare type DynamoStreamNextHandler<T = any> = NextHandler<DynamoStreamParam, void, DynamoStreamBody<T>>; /** * types for stream synchronizer */ export interface DynamoStreamFilter<T = any> { (id: string, item: T, diff?: string[], prev?: T): boolean; } export interface DynamoStreamCallback<T = any> { (id: string, eventName: DynamoStreamEvent, item: T, diff?: string[], prev?: T): Promise<void>; } /** * class: LambdaDynamoStreamHandler * - default DynamoDBStream Handler w/ event-listeners. */ export declare class LambdaDynamoStreamHandler extends LambdaSubHandler<DynamoStreamHandler> { static REPORT_ERROR: boolean; /** * default constructor w/ registering self. */ constructor(lambda: LambdaHandler, register?: boolean); protected listeners: DynamoStreamNextHandler[]; /** * add listener of cron-event. * @param handler */ addListener(handler: DynamoStreamNextHandler): void; protected $lastResult: any; /** * Default Handler. */ handle: DynamoStreamHandler; /** * create synchronizer to elastic6 via dynamo-stream. * - procedure: (filter) -> (onBeforeSync) -> synchronization -> (onAfterSync) * * @param options options of dynamo table. * @param service Elastic6Service instance * @param filter filter function * @param onBeforeSync callback function invoked before synchronization * @param onAfterSync callback function invoked after synchronization */ static createSyncToElastic6<T extends Elastic6Item>(options: DynamoOption, service: Elastic6Service<T>, filter?: DynamoStreamFilter<T>, onBeforeSync?: DynamoStreamCallback<T>, onAfterSync?: DynamoStreamCallback<T>): DynamoStreamNextHandler; }