Skip to content

Commit d04f08c

Browse files
committed
Review changes/alarm
1 parent ff5b5bf commit d04f08c

8 files changed

Lines changed: 29 additions & 19 deletions

File tree

infrastructure/terraform/components/api/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ No requirements.
5858
| <a name="module_ddb_alarms_letters"></a> [ddb\_alarms\_letters](#module\_ddb\_alarms\_letters) | ../../modules/alarms-ddb | n/a |
5959
| <a name="module_ddb_alarms_mi"></a> [ddb\_alarms\_mi](#module\_ddb\_alarms\_mi) | ../../modules/alarms-ddb | n/a |
6060
| <a name="module_ddb_alarms_suppliers"></a> [ddb\_alarms\_suppliers](#module\_ddb\_alarms\_suppliers) | ../../modules/alarms-ddb | n/a |
61+
| <a name="module_ddb_alarms_upsert_idempotency"></a> [ddb\_alarms\_upsert\_idempotency](#module\_ddb\_alarms\_upsert\_idempotency) | ../../modules/alarms-ddb | n/a |
6162
| <a name="module_domain_truststore"></a> [domain\_truststore](#module\_domain\_truststore) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/3.0.6/terraform-s3bucket.zip | n/a |
6263
| <a name="module_eventpub"></a> [eventpub](#module\_eventpub) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/3.0.6/terraform-eventpub.zip | n/a |
6364
| <a name="module_eventsub"></a> [eventsub](#module\_eventsub) | ../../modules/eventsub | n/a |

infrastructure/terraform/components/api/ddb_table_upsert_idempotency.tf

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,15 @@ resource "aws_dynamodb_table" "upsert_idempotency" {
1010
attribute_name = "expiration"
1111
enabled = true
1212
}
13+
14+
point_in_time_recovery {
15+
enabled = true
16+
}
17+
18+
tags = merge(
19+
local.default_tags,
20+
{
21+
NHSE-Enable-Dynamo-Backup-Acct = "True"
22+
}
23+
)
1324
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
module "ddb_alarms_upsert_idempotency" {
2+
count = local.alarms_enabled ? 1 : 0
3+
source = "../../modules/alarms-ddb"
4+
alarm_prefix = local.csi
5+
table_name = aws_dynamodb_table.upsert_idempotency.name
6+
tags = local.default_tags
7+
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,7 @@ describe("createUpsertLetterHandler", () => {
360360
const evt: SQSEvent = createSQSEvent([
361361
createSqsRecord("msg2", JSON.stringify(v1message)),
362362
]);
363-
(makeIdempotent as jest.Mock).mockImplementationOnce((_fn) => {});
363+
(makeIdempotent as jest.Mock).mockImplementationOnce((_fn) => "supplier1");
364364

365365
await createUpsertLetterHandler(mockedDeps)(evt, {} as any, {} as any);
366366

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

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import {
1515
IdempotencyConfig,
1616
makeIdempotent,
1717
} from "@aws-lambda-powertools/idempotency";
18-
import { AnyFunction } from "@aws-lambda-powertools/idempotency/lib/cjs/types/IdempotencyOptions";
1918
import { Deps } from "../config/deps";
2019
import {
2120
PreparedEvents,
@@ -189,7 +188,11 @@ function parseQueueMessage(queueMessage: string): QueueMessage {
189188
}
190189

191190
export default function createUpsertLetterHandler(deps: Deps): SQSHandler {
192-
const processRecordIdempotently = makeIdempotentOnId(processRecord, deps);
191+
const processRecordIdempotently = makeIdempotent(processRecord, {
192+
persistenceStore: deps.idempotencyLayer,
193+
config: idempotencyConfig,
194+
});
195+
193196
return metricScope((metrics: MetricsLogger) => {
194197
return async (event: SQSEvent, context: Context) => {
195198
const batchItemFailures: SQSBatchItemFailure[] = [];
@@ -284,10 +287,3 @@ async function processRecord(
284287
perSupplierSuccess.set(supplier, (perSupplierSuccess.get(supplier) || 0) + 1);
285288
return supplier;
286289
}
287-
288-
function makeIdempotentOnId(fn: AnyFunction, deps: Deps) {
289-
return makeIdempotent(fn, {
290-
persistenceStore: deps.idempotencyLayer,
291-
config: idempotencyConfig,
292-
});
293-
}

package-lock.json

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

package.json

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,5 @@
135135
"scripts/utilities/*",
136136
"tests",
137137
"tests/contracts/*"
138-
],
139-
"dependencies": {
140-
"@aws-lambda-powertools/idempotency": "^2.33.0"
141-
}
138+
]
142139
}

tests/helpers/event-fixtures.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@ import { randomUUID } from "node:crypto";
22

33
export function createPreparedV1Event(overrides: Record<string, unknown> = {}) {
44
const now = new Date().toISOString();
5+
const { id, ...dataOverrides } = overrides;
56

67
return {
78
specversion: "1.0",
8-
id: randomUUID(),
9+
id: (id as string) ?? randomUUID(),
910
source: "/data-plane/letter-rendering/test",
1011
subject: "client/client1/letter-request/letterRequest1",
1112
type: "uk.nhs.notify.letter-rendering.letter-request.prepared.v1",
@@ -28,7 +29,7 @@ export function createPreparedV1Event(overrides: Record<string, unknown> = {}) {
2829
createdAt: now,
2930
pageCount: 1,
3031
status: "PREPARED",
31-
...overrides,
32+
...dataOverrides,
3233
},
3334
traceparent: "00-0af7651916cd43dd8448eb211c803191-b7ad6b7169203331-01",
3435
recordedtime: now,

0 commit comments

Comments
 (0)