Skip to content

Commit 3be6611

Browse files
fix extract payload
1 parent 5c2f0df commit 3be6611

File tree

1 file changed

+20
-5
lines changed

1 file changed

+20
-5
lines changed

lambdas/mi-updates-transformer/src/mi-updates-transformer.ts

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
1-
import { Handler, KinesisStreamEvent, KinesisStreamRecord } from "aws-lambda";
2-
import { MI } from "@internal/datastore";
1+
import {
2+
DynamoDBRecord,
3+
Handler,
4+
KinesisStreamEvent,
5+
KinesisStreamRecord,
6+
} from "aws-lambda";
7+
import { MI, MISchema } from "@internal/datastore";
38
import {
49
PublishBatchCommand,
510
PublishBatchRequestEntry,
@@ -28,18 +33,28 @@ function buildMessage(
2833
return message;
2934
}
3035

31-
function extractPayload(record: KinesisStreamRecord, deps: Deps): MI {
36+
function extractPayload(
37+
record: KinesisStreamRecord,
38+
deps: Deps,
39+
): DynamoDBRecord {
3240
const payload = Buffer.from(record.kinesis.data, "base64").toString("utf8");
3341
deps.logger.info({ description: "Extracted payload", payload });
3442
return JSON.parse(payload);
3543
}
3644

45+
function extractMIData(record: DynamoDBRecord): MI {
46+
const newImage = record.dynamodb?.NewImage!;
47+
return MISchema.parse(unmarshall(newImage as any));
48+
}
49+
3750
export function createHandler(deps: Deps): Handler<KinesisStreamEvent> {
3851
return async (streamEvent: KinesisStreamEvent) => {
3952
deps.logger.info({ description: "Received event", streamEvent });
4053

41-
const cloudEvents: MISubmittedEvent[] = streamEvent.Records
42-
.map((record) => extractPayload(record, deps))
54+
const cloudEvents: MISubmittedEvent[] = streamEvent.Records.map((record) =>
55+
extractPayload(record, deps),
56+
)
57+
.map((element) => extractMIData(element))
4358
.map((payload) => mapMIToCloudEvent(payload, deps));
4459

4560
for (const batch of generateBatches(cloudEvents)) {

0 commit comments

Comments
 (0)