import 'dotenv/config'; import config from 'config'; import logger from '@common/libs/utils/logger'; import Context from '@common/libs/Context'; import { SQSBatchResponse, SQSEvent } from 'aws-lambda'; import { SQSMessagesHandler } from '@p81-common/common-messaging'; import { Events } from '@p81-common/sdpv2-dtos'; import AgentConnectEventHandler from '@common/libs/handlers/AgentConnectEventHandler'; import ProfileUpdateListEventHandler from '@common/libs/handlers/ProfileUpdateListEventHandler'; const { AgentConnectEvent, ProfileUpdateListEvent } = Events.SDPv2; let fetcherContext: Context; let sqsMessagesHandler: SQSMessagesHandler; function initializeHandlers(context: Context) { sqsMessagesHandler = new SQSMessagesHandler({ logger: fetcherContext.logger }); const agentConnectEventHandler = new AgentConnectEventHandler(context); const profileUpdateListEventHandler = new ProfileUpdateListEventHandler(context); sqsMessagesHandler.registerHandler( AgentConnectEvent.eventName, agentConnectEventHandler.handler.bind(agentConnectEventHandler), AgentConnectEvent.schema, ); sqsMessagesHandler.registerHandler( ProfileUpdateListEvent.eventName, profileUpdateListEventHandler.handler.bind(profileUpdateListEventHandler), ProfileUpdateListEvent.schema, ); } async function initializeContext() { if (!fetcherContext) { const pusherLogger = logger.child({ domain: config.get('domain'), }); fetcherContext = new Context(config, pusherLogger); await fetcherContext.initContext(); initializeHandlers(fetcherContext); } } const swgPusherHandler = async (event: SQSEvent): Promise => { await initializeContext(); fetcherContext.logger.debug({ message: 'eventData', event }); const res = await sqsMessagesHandler.process(event); fetcherContext.logger.debug({ message: 'lambda response', res }); return res; }; export const handler = swgPusherHandler;