Skip to content

Commit ee1cb1b

Browse files
committed
ttl
1 parent ba5c455 commit ee1cb1b

File tree

4 files changed

+44
-1
lines changed

4 files changed

+44
-1
lines changed

lambdas/backend-api/src/__tests__/templates/infra/routing-config-repository/repository.test.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,12 @@ uuidMock.mockReturnValue(generatedId);
2424

2525
const date = new Date(2024, 11, 27);
2626

27+
const mockTtl = 1000;
28+
29+
jest.mock('@backend-api/utils/calculate-ttl', () => ({
30+
calculateTTL: () => mockTtl,
31+
}));
32+
2733
beforeAll(() => {
2834
jest.useFakeTimers();
2935
jest.setSystemTime(date);
@@ -407,12 +413,14 @@ describe('RoutingConfigRepository', () => {
407413
'#status': 'status',
408414
'#updatedAt': 'updatedAt',
409415
'#updatedBy': 'updatedBy',
416+
'#ttl': 'ttl',
410417
},
411418
ExpressionAttributeValues: {
412419
':condition_1_status': 'DRAFT',
413420
':status': 'DELETED',
414421
':updatedAt': date.toISOString(),
415422
':updatedBy': user.userId,
423+
':ttl': mockTtl,
416424
},
417425
Key: {
418426
id: routingConfig.id,
@@ -421,7 +429,7 @@ describe('RoutingConfigRepository', () => {
421429
ReturnValues: 'ALL_NEW',
422430
TableName: TABLE_NAME,
423431
UpdateExpression:
424-
'SET #status = :status, #updatedAt = :updatedAt, #updatedBy = :updatedBy',
432+
'SET #status = :status, #ttl = :ttl, #updatedAt = :updatedAt, #updatedBy = :updatedBy',
425433
});
426434
});
427435

lambdas/backend-api/src/templates/infra/routing-config-repository/repository.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import type { User } from 'nhs-notify-web-template-management-utils';
2121
import { RoutingConfigQuery } from './query';
2222
import { RoutingConfigUpdateBuilder } from 'nhs-notify-entity-update-command-builder';
2323
import { ConditionalCheckFailedException } from '@aws-sdk/client-dynamodb';
24+
import { calculateTTL } from '@backend-api/utils/calculate-ttl';
2425

2526
export class RoutingConfigRepository {
2627
private updateCmdOpts = {
@@ -154,6 +155,7 @@ export class RoutingConfigRepository {
154155
this.updateCmdOpts
155156
)
156157
.setStatus('DELETED')
158+
.setTtl(calculateTTL())
157159
.expectedStatus('DRAFT')
158160
.setUpdatedByUserAt(user.userId)
159161
.build();

utils/entity-update-command-builder/src/__tests__/routing-config-update-builder.test.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,33 @@ describe('RoutingConfigUpdateBuilder', () => {
274274
});
275275
});
276276

277+
describe('setTtl', () => {
278+
test('sets ttl', () => {
279+
const builder = new RoutingConfigUpdateBuilder(
280+
mockTableName,
281+
mockOwner,
282+
mockId
283+
);
284+
285+
const res = builder.setTtl(90_000).build();
286+
287+
expect(res).toEqual({
288+
ExpressionAttributeNames: {
289+
'#ttl': 'ttl',
290+
},
291+
ExpressionAttributeValues: {
292+
':ttl': 90_000,
293+
},
294+
Key: {
295+
id: mockId,
296+
owner: mockOwnerKey,
297+
},
298+
TableName: 'TABLE_NAME',
299+
UpdateExpression: 'SET #ttl = :ttl',
300+
});
301+
});
302+
});
303+
277304
describe('expectRoutingConfigExists', () => {
278305
test('adds condition', () => {
279306
const builder = new RoutingConfigUpdateBuilder(

utils/entity-update-command-builder/src/routing-config-update-builder.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { EntityUpdateBuilder } from './common/entity-update-builder';
1010
type DbOnlyFields = {
1111
updatedBy: string;
1212
createdBy: string;
13+
ttl?: number;
1314
};
1415

1516
export class RoutingConfigUpdateBuilder extends EntityUpdateBuilder<
@@ -63,6 +64,11 @@ export class RoutingConfigUpdateBuilder extends EntityUpdateBuilder<
6364
return this;
6465
}
6566

67+
setTtl(ttl: number) {
68+
this.updateBuilder.setValue('ttl', ttl);
69+
return this;
70+
}
71+
6672
expectedStatus(expectedStatus: RoutingConfigStatus) {
6773
this.updateBuilder.andCondition('status', '=', expectedStatus);
6874
return this;

0 commit comments

Comments
 (0)