Skip to content

Commit c592d36

Browse files
committed
new envars for status update transformer
1 parent 37ce482 commit c592d36

File tree

6 files changed

+16
-4
lines changed

6 files changed

+16
-4
lines changed

infrastructure/terraform/components/api/module_lambda_letter_updates_transformer.tf

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@ module "letter_updates_transformer" {
3636
log_subscription_role_arn = local.acct.log_subscription_role_arn
3737

3838
lambda_env_vars = merge(local.common_lambda_env_vars, {
39-
EVENTPUB_SNS_TOPIC_ARN = "${module.eventpub.sns_topic.arn}"
39+
EVENTPUB_SNS_TOPIC_ARN = "${module.eventpub.sns_topic.arn}",
40+
ACCOUNT_SHORT_NAME = var.group,
41+
ENVIRONMENT = var.environment
4042
})
4143
}
4244

internal/datastore/src/types.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ export const LetterSchema = LetterSchemaBase.extend({
4747
updatedAt: z.string(),
4848
supplierStatus: z.string().describe("Secondary index PK"),
4949
supplierStatusSk: z.string().describe("Secondary index SK"),
50+
source: z.string(),
51+
subject: z.string(),
5052
ttl: z.int(),
5153
}).describe("Letter");
5254

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import { z } from "zod";
22

33
const EnvVarsSchema = z.object({
44
EVENTPUB_SNS_TOPIC_ARN: z.string(),
5+
ACCOUNT_SHORT_NAME: z.string(),
6+
ENVIRONMENT: z.string(),
57
});
68

79
export type EnvVars = z.infer<typeof EnvVarsSchema>;

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { LetterEvent } from "@nhsdigital/nhs-notify-event-schemas-supplier-api/s
1313
import mapLetterToCloudEvent from "./mappers/letter-mapper";
1414
import { Deps } from "./deps";
1515
import { LetterForEventPub, LetterSchemaForEventPub } from "./types";
16+
import { envVars } from "./env";
1617

1718
// SNS PublishBatchCommand supports up to 10 messages per batch
1819
const BATCH_SIZE = 10;
@@ -30,7 +31,7 @@ export default function createHandler(deps: Deps): Handler<KinesisStreamEvent> {
3031
isChanged(record, "status") || isChanged(record, "reasonCode"),
3132
)
3233
.map((element) => extractNewLetter(element))
33-
.map((element) => mapLetterToCloudEvent(element));
34+
.map((element) => mapLetterToCloudEvent(element, envVars.ACCOUNT_SHORT_NAME, envVars.ENVIRONMENT));
3435

3536
for (const batch of generateBatches(cloudEvents)) {
3637
deps.logger.info({

lambdas/letter-updates-transformer/src/mappers/__tests__/letter-mapper.test.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@ describe("letter-mapper", () => {
1414
reasonText: "Reason text",
1515
updatedAt: "2025-11-24T15:55:18.000Z",
1616
} as Letter;
17-
const event = mapLetterToCloudEvent(letter);
17+
const account = 'dev';
18+
const environment = 'main';
19+
const event = mapLetterToCloudEvent(letter, account, environment);
1820

1921
// Check it conforms to the letter event schema - parse will throw an error if not
2022
$LetterEvent.parse(event);

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import { LetterForEventPub } from "../types";
55

66
export default function mapLetterToCloudEvent(
77
letter: LetterForEventPub,
8+
account: string,
9+
environment: string
810
): LetterEvent {
911
const eventId = randomUUID();
1012
const dataschemaversion = eventSchemaPackage.version;
@@ -15,7 +17,7 @@ export default function mapLetterToCloudEvent(
1517
plane: "data",
1618
dataschema: `https://notify.nhs.uk/cloudevents/schemas/supplier-api/letter.${letter.status}.${dataschemaversion}.schema.json`,
1719
dataschemaversion,
18-
source: "/data-plane/supplier-api/letters",
20+
source: `/data-plane/supplier-api/${account}/${environment}/letters`,
1921
subject: `letter-origin/supplier-api/letter/${letter.id}`,
2022

2123
data: {
@@ -28,6 +30,7 @@ export default function mapLetterToCloudEvent(
2830
reasonText: letter.reasonText,
2931
origin: {
3032
domain: "supplier-api",
33+
//TODO CCM-12977: when event sourcing implements source and subject fields, these value come from the letter
3134
source: "/data-plane/supplier-api/letters",
3235
subject: `letter-origin/supplier-api/letter/${letter.id}`,
3336
event: eventId,

0 commit comments

Comments
 (0)