Skip to content

Commit 5eeba9a

Browse files
Review fixes
1 parent 6e1f541 commit 5eeba9a

7 files changed

Lines changed: 38 additions & 31 deletions

File tree

lambdas/supplier-allocator/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
"@aws-sdk/client-sqs": "^3.984.0",
55
"@aws-sdk/lib-dynamodb": "^3.858.0",
66
"@internal/datastore": "*",
7+
"@internal/helpers": "^0.1.0",
78
"@nhsdigital/nhs-notify-event-schemas-letter-rendering": "^2.0.1",
89
"@nhsdigital/nhs-notify-event-schemas-letter-rendering-v1": "npm:@nhsdigital/nhs-notify-event-schemas-letter-rendering@^1.1.5",
910
"@nhsdigital/nhs-notify-event-schemas-supplier-api": "^1.0.8",

lambdas/supplier-allocator/src/config/__tests__/deps.test.ts

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,35 +14,30 @@ describe("createDependenciesContainer", () => {
1414
jest.clearAllMocks();
1515
jest.resetModules();
1616

17-
// pino
18-
jest.mock("pino", () => ({
19-
__esModule: true,
20-
default: jest.fn(() => ({
17+
// @internal/helpers - createLogger
18+
jest.mock("@internal/helpers", () => ({
19+
createLogger: jest.fn(() => ({
2120
info: jest.fn(),
2221
error: jest.fn(),
2322
warn: jest.fn(),
2423
debug: jest.fn(),
24+
level: "info",
2525
})),
2626
}));
2727

28-
// Repo client
29-
jest.mock("@internal/datastore", () => ({
30-
LetterRepository: jest.fn(),
31-
}));
32-
3328
// Env
3429
jest.mock("../env", () => ({ envVars: env }));
3530
});
3631

3732
test("constructs deps and wires repository config correctly", async () => {
3833
// get current mock instances
39-
const pinoMock = jest.requireMock("pino");
34+
const { createLogger } = jest.requireMock("@internal/helpers");
4035

4136
// eslint-disable-next-line @typescript-eslint/no-require-imports
4237
const { createDependenciesContainer } = require("../deps");
4338
const deps: Deps = createDependenciesContainer();
39+
expect(createLogger).toHaveBeenCalledTimes(1);
4440

45-
expect(pinoMock.default).toHaveBeenCalledTimes(1);
4641
expect(deps.env).toEqual(env);
4742
});
4843
});

lambdas/supplier-allocator/src/config/deps.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
import { SQSClient } from "@aws-sdk/client-sqs";
2-
import pino from "pino";
2+
import { Logger } from "pino";
3+
import { createLogger } from "@internal/helpers";
34
import { EnvVars, envVars } from "./env";
45

56
export type Deps = {
6-
logger: pino.Logger;
7+
logger: Logger;
78
env: EnvVars;
89
sqsClient: SQSClient;
910
};
1011

1112
export function createDependenciesContainer(): Deps {
12-
const log = pino();
13+
const log = createLogger({ logLevel: envVars.PINO_LOG_LEVEL });
1314

1415
return {
1516
logger: log,

lambdas/supplier-allocator/src/config/env.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ const LetterVariantSchema = z.record(
1010
export type LetterVariant = z.infer<typeof LetterVariantSchema>;
1111

1212
const EnvVarsSchema = z.object({
13+
PINO_LOG_LEVEL: z.coerce.string().optional(),
1314
VARIANT_MAP: z.string().transform((str, _) => {
1415
const parsed = JSON.parse(str);
1516
return LetterVariantSchema.parse(parsed);

lambdas/supplier-allocator/src/handler/allocate-handler.ts

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,10 @@ function resolveSupplierForVariant(
1616
variantId: string,
1717
deps: Deps,
1818
): SupplierSpec {
19-
deps.logger.info({ variantId }, "Resolving supplier for letter variant");
19+
deps.logger.info({
20+
description: "Resolving supplier for letter variant",
21+
variantId,
22+
});
2023
return deps.env.VARIANT_MAP[variantId];
2124
}
2225

@@ -71,10 +74,11 @@ export default function createSupplierAllocatorHandler(deps: Deps): SQSHandler {
7174
supplierSpec,
7275
};
7376

74-
deps.logger.info(
75-
{ msg: queueMessage, url: queueUrl },
76-
"Sending message to upsert letter queue",
77-
);
77+
deps.logger.info({
78+
description: "Sending message to upsert letter queue",
79+
msg: queueMessage,
80+
url: queueUrl,
81+
});
7882

7983
await deps.sqsClient.send(
8084
new SendMessageCommand({
@@ -83,10 +87,12 @@ export default function createSupplierAllocatorHandler(deps: Deps): SQSHandler {
8387
}),
8488
);
8589
} catch (error) {
86-
deps.logger.error(
87-
{ err: error, message: record.body },
88-
`Error processing allocation of record ${record.messageId}`,
89-
);
90+
deps.logger.error({
91+
description: "Error processing allocation of record",
92+
err: error,
93+
messageId: record.messageId,
94+
message: record.body,
95+
});
9096
batchItemFailures.push({ itemIdentifier: record.messageId });
9197
}
9298
});

lambdas/upsert-letter/src/handler/upsert-handler.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ const QueueMessageSchema = z.union([
3737
}),
3838
]);
3939

40+
type QueueMessage = z.infer<typeof QueueMessageSchema>;
41+
4042
type UpsertOperation = {
4143
name: "Insert" | "Update";
4244
schemas: z.ZodSchema[];
@@ -173,7 +175,7 @@ function getSupplierIdFromEvent(letterEvent: any): string {
173175
return "unknown";
174176
}
175177

176-
function parseQueueMessage(queueMessage: string): any {
178+
function parseQueueMessage(queueMessage: string): QueueMessage {
177179
const result = QueueMessageSchema.safeParse(queueMessage);
178180

179181
if (!result.success) {
@@ -201,18 +203,18 @@ export default function createUpsertLetterHandler(deps: Deps): SQSHandler {
201203
messageId: record.messageId,
202204
message: record.body,
203205
});
204-
const queueMessage = JSON.parse(record.body);
206+
const sqsMessage = JSON.parse(record.body);
205207

206-
const sqsEvent = parseQueueMessage(queueMessage);
208+
const queueMessage: QueueMessage = parseQueueMessage(sqsMessage);
207209

208-
let letterEvent: any;
210+
let letterEvent: LetterEvent | PreparedEvents;
209211
let supplierSpec: SupplierSpec | undefined;
210212

211-
if ("letterEvent" in sqsEvent) {
212-
letterEvent = sqsEvent.letterEvent;
213-
supplierSpec = sqsEvent.supplierSpec;
213+
if ("letterEvent" in queueMessage) {
214+
letterEvent = queueMessage.letterEvent;
215+
supplierSpec = queueMessage.supplierSpec;
214216
} else {
215-
letterEvent = sqsEvent;
217+
letterEvent = queueMessage;
216218
supplierSpec = undefined;
217219
}
218220

package-lock.json

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)