Dynamo Types Stream
Framework for DynamoDB Stream Event processing on Lambda. Based on (https://github.com/balmbees/dynamo-typeorm)
Powering Vingle
Usage
import { Decorator, Query, Table, Config } from "dynamo-types";
@Decorator.Table({ name: "prod-Card" })
class Card extends Table {
@Decorator.Attribute()
public id: number;
@Decorator.Attribute()
public title: string;
@Decorator.Attribute({ timeToLive: true })
public expiresAt: number;
@Decorator.FullPrimaryKey('id', 'title')
static readonly primaryKey: Query.FullPrimaryKey<Card, number, string>;
@Decorator.Writer()
static readonly writer: Query.Writer<Card>;
}
import * as DynamoTypesStream from "dynamo-types-stream";
export const handler = DynamoTypesStream.createLambdaHandler(
createHandler(
Card,
"Series",
[
{
eventType: "INSERT",
async handler(events) {
events.forEach(event => {
console.log("New Card! :", event.newRecord.id);
})
}
}, {
eventType: "REMOVE",
async handler(events) {
events.forEach(event => {
console.log("New Card! :", event.newRecord.id);
})
}
}
]
)
)
export function createHandler<T extends Table>(
tableClass: ITable<T>,
strategy: "Map" | "Series" = "Series",
handlers: Array<HandlerDefinition<T>>
)