Skip to content

Commit a185e5f

Browse files
address PR comments
1 parent f413b15 commit a185e5f

File tree

4 files changed

+43
-33
lines changed

4 files changed

+43
-33
lines changed

lambdas/api-handler/src/handlers/post-letters.ts

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { ApiErrorDetail } from "../contracts/errors";
55
import {
66
PostLettersRequest,
77
PostLettersRequestSchema,
8+
UpdateLetterCommand,
89
} from "../contracts/letters";
910
import ValidationError from "../errors/validation-error";
1011
import { processError } from "../mappers/error-mapper";
@@ -22,7 +23,7 @@ function duplicateIdsExist(postLettersRequest: PostLettersRequest) {
2223
/**
2324
* emits metrics of successful letter updates, including the supplier and grouped by status
2425
*/
25-
async function emitMetics(
26+
function emitMetics(
2627
metrics: MetricsLogger,
2728
supplierId: string,
2829
statusesMapping: Map<string, number>,
@@ -36,6 +37,14 @@ async function emitMetics(
3637
}
3738
}
3839

40+
function populateStatusesMap(updateLetterCommands: UpdateLetterCommand[]) {
41+
const statusMap = new Map<string, number>();
42+
for (const command of updateLetterCommands) {
43+
statusMap.set(command.status, (statusMap.get(command.status) || 0) + 1);
44+
}
45+
return statusMap;
46+
}
47+
3948
export default function createPostLettersHandler(
4049
deps: Deps,
4150
): APIGatewayProxyHandler {
@@ -95,14 +104,18 @@ export default function createPostLettersHandler(
95104
);
96105
}
97106

98-
const statusesMapping = new Map<string, number>();
107+
const updateLetterCommands: UpdateLetterCommand[] = mapToUpdateCommands(
108+
postLettersRequest,
109+
supplierId,
110+
);
111+
const statusesMapping = populateStatusesMap(updateLetterCommands);
99112
await enqueueLetterUpdateRequests(
100-
mapToUpdateCommands(postLettersRequest, supplierId, statusesMapping),
113+
updateLetterCommands,
101114
commonIds.value.correlationId,
102115
deps,
103116
);
104117

105-
await emitMetics(metrics, supplierId, statusesMapping);
118+
emitMetics(metrics, supplierId, statusesMapping);
106119
return {
107120
statusCode: 202,
108121
body: "",

lambdas/api-handler/src/mappers/letter-mapper.ts

Lines changed: 7 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -58,24 +58,14 @@ export function mapToUpdateCommand(
5858
export function mapToUpdateCommands(
5959
request: PostLettersRequest,
6060
supplierId: string,
61-
statusesMapping?: Map<string, number>,
6261
): UpdateLetterCommand[] {
63-
return request.data.map((letterToUpdate: PostLettersRequestResource) => {
64-
const letterCommand = {
65-
id: letterToUpdate.id,
66-
supplierId,
67-
status: LetterStatus.parse(letterToUpdate.attributes.status),
68-
reasonCode: letterToUpdate.attributes.reasonCode,
69-
reasonText: letterToUpdate.attributes.reasonText,
70-
};
71-
if (statusesMapping) {
72-
statusesMapping.set(
73-
letterCommand.status,
74-
(statusesMapping.get(letterCommand.status) || 0) + 1,
75-
);
76-
}
77-
return letterCommand;
78-
});
62+
return request.data.map((letterToUpdate: PostLettersRequestResource) => ({
63+
id: letterToUpdate.id,
64+
supplierId,
65+
status: LetterStatus.parse(letterToUpdate.attributes.status),
66+
reasonCode: letterToUpdate.attributes.reasonCode,
67+
reasonText: letterToUpdate.attributes.reasonText,
68+
}));
7969
}
8070

8171
// ---------------------------------------------

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

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import { MetricsLogger, Unit, metricScope } from "aws-embedded-metrics";
1414
import mapLetterToCloudEvent from "./mappers/letter-mapper";
1515
import { Deps } from "./deps";
1616
import { LetterForEventPub, LetterSchemaForEventPub } from "./types";
17+
import { string } from "zod";
1718

1819
// SNS PublishBatchCommand supports up to 10 messages per batch
1920
const BATCH_SIZE = 10;
@@ -39,7 +40,9 @@ export default function createHandler(deps: Deps): Handler<KinesisStreamEvent> {
3940
mapLetterToCloudEvent(element, deps.env.EVENT_SOURCE),
4041
);
4142

42-
const eventTypeCount = new Map<string, number>();
43+
const eventTypeCount: Map<string, number> =
44+
populateEventTypeMap(cloudEvents);
45+
// const eventTypeCount = new Map<string, number>();
4346
for (const batch of generateBatches(cloudEvents)) {
4447
deps.logger.info({
4548
description: "Publishing batch",
@@ -49,22 +52,26 @@ export default function createHandler(deps: Deps): Handler<KinesisStreamEvent> {
4952
await deps.snsClient.send(
5053
new PublishBatchCommand({
5154
TopicArn: deps.env.EVENTPUB_SNS_TOPIC_ARN,
52-
PublishBatchRequestEntries: batch.map((element, index) => {
53-
eventTypeCount.set(
54-
element.type,
55-
(eventTypeCount.get(element.type) || 0) + 1,
56-
);
57-
return buildMessage(element, index);
58-
}),
55+
PublishBatchRequestEntries: batch.map((element, index) =>
56+
buildMessage(element, index),
57+
),
5958
}),
6059
);
6160
}
62-
await emitMetrics(metrics, eventTypeCount);
61+
emitMetrics(metrics, eventTypeCount);
6362
};
6463
});
6564
}
6665

67-
async function emitMetrics(
66+
function populateEventTypeMap(cloudEvents: LetterEvent[]) {
67+
const evtMap = new Map<string, number>();
68+
for (const event of cloudEvents) {
69+
evtMap.set(event.type, (evtMap.get(event.type) || 0) + 1);
70+
}
71+
return evtMap;
72+
}
73+
74+
function emitMetrics(
6875
metrics: MetricsLogger,
6976
eventTypeCount: Map<string, number>,
7077
) {

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ function extractMIData(record: DynamoDBRecord): MI {
5050
return MISchema.parse(unmarshall(newImage as any));
5151
}
5252

53-
async function emitMetrics(
53+
function emitMetrics(
5454
metrics: MetricsLogger,
5555
eventTypeCount: Map<string, number>,
5656
) {
@@ -92,7 +92,7 @@ export default function createHandler(deps: Deps): Handler<KinesisStreamEvent> {
9292
}),
9393
);
9494
}
95-
await emitMetrics(metrics, eventTypeCount);
95+
emitMetrics(metrics, eventTypeCount);
9696
};
9797
});
9898
}

0 commit comments

Comments
 (0)