Skip to content

Commit 050b4b5

Browse files
WIP
1 parent f5708be commit 050b4b5

File tree

2 files changed

+28
-11
lines changed

2 files changed

+28
-11
lines changed
Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,31 @@
1-
import { SQSRecord } from 'aws-lambda';
1+
import { SQSRecord} from 'aws-lambda';
22
import { Logger } from 'utils';
3-
import { NudgeCommand } from 'domain/nudge-command';
4-
import { $NudgeCommand } from 'app/nudge-command-validator';
3+
import { PDMResourceAvailable } from 'digital-letters-events';
4+
import { InvalidPdmResourceAvailableEvent } from 'domain/invalid-pdm-resource-available-event';
5+
import { messageDownloadedValidator } from 'digital-letters-events/PDMResourceAvailable.js';
56

67
export const parseSqsRecord = (
78
sqsRecord: SQSRecord,
89
logger: Logger,
9-
): NudgeCommand => {
10+
): PDMResourceAvailable => {
1011
logger.info('Parsing SQS Record', {
1112
messageId: sqsRecord.messageId,
1213
});
14+
const sqsEventBody = JSON.parse(sqsRecord.body);
15+
const sqsEventDetail = sqsEventBody.detail;
16+
const isEventValid = messageDownloadedValidator(sqsEventDetail);
17+
if(!isEventValid) {
18+
logger.error({
19+
err: messageDownloadedValidator.errors,
20+
description: 'The SQS message does not contain a valid PDMResourceAvailable event',
21+
messageId: sqsRecord.messageId,
22+
});
23+
throw new InvalidPdmResourceAvailableEvent(sqsRecord.messageId);
24+
}
1325

14-
const jsonParsed = JSON.parse(sqsRecord.body) as NudgeCommand;
15-
const zodParsed = $NudgeCommand.parse(jsonParsed);
16-
17-
logger.info('Parsed SQS Record as Nudge Command Event', {
18-
messageId: sqsRecord.messageId,
19-
sourceEventId: zodParsed.sourceEventId,
26+
logger.info('Parsed valid PDMResourceAvailable Event', {
27+
messageId: sqsRecord.messageId
2028
});
2129

22-
return zodParsed;
30+
return sqsEventDetail as PDMResourceAvailable;
2331
};
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
export class InvalidPdmResourceAvailableEvent extends Error
2+
{
3+
readonly sqsMessageId: string;
4+
5+
constructor(sqsMessageId: string) {
6+
super('Unable to parse PDMResourceAvailable event from SQS message');
7+
this.sqsMessageId = sqsMessageId;
8+
}
9+
}

0 commit comments

Comments
 (0)