lemon-core
Version:
Lemon Serverless Micro-Service Platform
74 lines (73 loc) • 2.57 kB
TypeScript
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;
}