UNPKG

@skazka/aws

Version:
54 lines (42 loc) 1.35 kB
const lambdaWrapper = require('./wrapper'); const recursive = require('../handler/recursive'); const rowWrapper = require('../handler/wrapper'); /** const eventHandler = require('@skazka/aws/lambda/event'); const convert = require('@skazka/aws/dynamodb/convert'); const createPool = require('@skazka/aws/pg/pool'); const handler = async ({ dynamodb }, registry) => { const { oldData, newData } = convert(dynamodb); await registry.pool.save(oldData, newData); }; const wrapper = { useRegistry: async (registry) => { registry.pool = await createPool(); // eslint-disable-line return async () => { await registry.pool.end(); delete registry.pool; // eslint-disable-line }; }, }; module.exports.handler = eventHandler(handler, { wrapper, retry }); */ const eventHandler = (handler, options = {}) => async (event, context) => { const { wrapper = {}, parallel = false, } = options; const processRow = rowWrapper( handler, { throwError: wrapper.throwError, errorHandler: wrapper.errorHandler, }, ); const wrapperHandler = lambdaWrapper(async (eventData) => ( parallel ? Promise.all(eventData.Records.map(processRow)) : recursive(processRow, eventData.Records) ), wrapper); return wrapperHandler(event, context); }; module.exports = eventHandler;