Skip to content

Commit 3bd5b9f

Browse files
committed
replace DatabaseTemplate
1 parent 235a70c commit 3bd5b9f

File tree

7 files changed

+48
-68
lines changed

7 files changed

+48
-68
lines changed

lambdas/backend-api/src/__tests__/templates/app/template-client.test.ts

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,10 @@ import {
66
TemplateDto,
77
CreateUpdateTemplate,
88
} from 'nhs-notify-backend-client';
9-
import {
10-
DatabaseTemplate,
11-
TemplateRepository,
12-
} from '@backend-api/templates/infra';
9+
import { TemplateRepository } from '@backend-api/templates/infra';
1310
import { TemplateClient } from '@backend-api/templates/app/template-client';
1411
import { LetterUploadRepository } from '@backend-api/templates/infra/letter-upload-repository';
12+
import { MergedTemplate } from 'nhs-notify-web-template-management-utils';
1513

1614
jest.mock('node:crypto');
1715
jest.mock('nhs-notify-web-template-management-utils/logger');
@@ -142,7 +140,7 @@ describe('templateClient', () => {
142140
templateStatus: 'NOT_YET_SUBMITTED',
143141
};
144142

145-
const template: DatabaseTemplate = {
143+
const template: MergedTemplate = {
146144
...expectedTemplateDto,
147145
owner,
148146
version: 1,
@@ -186,7 +184,7 @@ describe('templateClient', () => {
186184
templateStatus: 'NOT_YET_SUBMITTED',
187185
};
188186

189-
const template: DatabaseTemplate = {
187+
const template: MergedTemplate = {
190188
...expectedTemplateDto,
191189
owner,
192190
version: 1,
@@ -253,7 +251,7 @@ describe('templateClient', () => {
253251

254252
const creationTime = '2025-03-12T08:41:08.805Z';
255253

256-
const initialCreatedTemplate: DatabaseTemplate = {
254+
const initialCreatedTemplate: MergedTemplate = {
257255
...dataWithFiles,
258256
id: templateId,
259257
createdAt: creationTime,
@@ -265,7 +263,7 @@ describe('templateClient', () => {
265263

266264
const updateTime = '2025-03-12T08:41:33.666Z';
267265

268-
const finalTemplate: DatabaseTemplate = {
266+
const finalTemplate: MergedTemplate = {
269267
...initialCreatedTemplate,
270268
templateStatus: 'PENDING_VALIDATION',
271269
updatedAt: updateTime,
@@ -546,7 +544,7 @@ describe('templateClient', () => {
546544
});
547545

548546
mocks.templateRepository.create.mockResolvedValueOnce({
549-
data: {} as unknown as DatabaseTemplate,
547+
data: {} as unknown as MergedTemplate,
550548
});
551549

552550
const result = await templateClient.createLetterTemplate(
@@ -604,7 +602,7 @@ describe('templateClient', () => {
604602
templateStatus: 'PENDING_VALIDATION',
605603
};
606604

607-
const initialCreatedTemplate: DatabaseTemplate = {
605+
const initialCreatedTemplate: MergedTemplate = {
608606
...expectedTemplateDto,
609607
templateStatus: 'PENDING_UPLOAD',
610608
owner,
@@ -695,7 +693,7 @@ describe('templateClient', () => {
695693
templateStatus: 'PENDING_VALIDATION',
696694
};
697695

698-
const initialCreatedTemplate: DatabaseTemplate = {
696+
const initialCreatedTemplate: MergedTemplate = {
699697
...expectedTemplateDto,
700698
templateStatus: 'PENDING_UPLOAD',
701699
owner,
@@ -789,7 +787,7 @@ describe('templateClient', () => {
789787

790788
const creationTime = '2025-03-12T08:41:08.805Z';
791789

792-
const initialCreatedTemplate: DatabaseTemplate = {
790+
const initialCreatedTemplate: MergedTemplate = {
793791
...dataWithFiles,
794792
id: templateId,
795793
createdAt: creationTime,
@@ -801,7 +799,7 @@ describe('templateClient', () => {
801799

802800
const updateTime = '2025-03-12T08:41:33.666Z';
803801

804-
const finalTemplate: DatabaseTemplate = {
802+
const finalTemplate: MergedTemplate = {
805803
...initialCreatedTemplate,
806804
templateStatus: 'PENDING_VALIDATION',
807805
updatedAt: updateTime,
@@ -977,7 +975,7 @@ describe('templateClient', () => {
977975
templateStatus: 'NOT_YET_SUBMITTED',
978976
};
979977

980-
const template: DatabaseTemplate = {
978+
const template: MergedTemplate = {
981979
...expectedTemplateDto,
982980
owner,
983981
version: 1,
@@ -1089,7 +1087,7 @@ describe('templateClient', () => {
10891087
templateStatus: 'NOT_YET_SUBMITTED',
10901088
};
10911089

1092-
const template: DatabaseTemplate = {
1090+
const template: MergedTemplate = {
10931091
...templateDTO,
10941092
owner,
10951093
version: 1,
@@ -1359,7 +1357,7 @@ describe('templateClient', () => {
13591357
templateType: 'SMS',
13601358
};
13611359

1362-
const template: DatabaseTemplate = {
1360+
const template: MergedTemplate = {
13631361
...expectedTemplateDto,
13641362
owner,
13651363
version: 1,

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

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,9 @@ import {
1717
ValidatedCreateUpdateTemplate,
1818
} from 'nhs-notify-backend-client';
1919
import { logger } from 'nhs-notify-web-template-management-utils/logger';
20-
import { DatabaseTemplate, TemplateRepository } from '../../../templates/infra';
20+
import { TemplateRepository } from '../../../templates/infra';
2121
import { marshall } from '@aws-sdk/util-dynamodb';
22+
import { MergedTemplate } from 'nhs-notify-web-template-management-utils';
2223

2324
jest.mock('nhs-notify-web-template-management-utils/logger');
2425
jest.mock('node:crypto');
@@ -79,25 +80,25 @@ const databaseTemplateProperties = {
7980
updatedAt: '2024-12-27T00:00:00.000Z',
8081
};
8182

82-
const emailTemplate: DatabaseTemplate = {
83+
const emailTemplate: MergedTemplate = {
8384
templateType: 'EMAIL',
8485
...emailProperties,
8586
...databaseTemplateProperties,
8687
};
8788

88-
const smsTemplate: DatabaseTemplate = {
89+
const smsTemplate: MergedTemplate = {
8990
templateType: 'SMS',
9091
...smsProperties,
9192
...databaseTemplateProperties,
9293
};
9394

94-
const nhsAppTemplate: DatabaseTemplate = {
95+
const nhsAppTemplate: MergedTemplate = {
9596
templateType: 'NHS_APP',
9697
...nhsAppProperties,
9798
...databaseTemplateProperties,
9899
};
99100

100-
const letterTemplate: DatabaseTemplate = {
101+
const letterTemplate: MergedTemplate = {
101102
templateType: 'LETTER',
102103
...letterProperties,
103104
...databaseTemplateProperties,
@@ -569,7 +570,7 @@ describe('templateRepository', () => {
569570
const id = 'abc-def-ghi-jkl-123';
570571
const owner = 'real-owner';
571572

572-
const databaseTemplate: DatabaseTemplate = {
573+
const databaseTemplate: MergedTemplate = {
573574
id,
574575
owner,
575576
version: 1,
@@ -680,7 +681,7 @@ describe('templateRepository', () => {
680681
const id = 'abc-def-ghi-jkl-123';
681682
const owner = 'real-owner';
682683

683-
const databaseTemplate: DatabaseTemplate = {
684+
const databaseTemplate: MergedTemplate = {
684685
id,
685686
owner,
686687
version: 1,
@@ -797,7 +798,7 @@ describe('templateRepository', () => {
797798
const id = 'abc-def-ghi-jkl-123';
798799
const owner = 'real-owner';
799800

800-
const databaseTemplate: DatabaseTemplate = {
801+
const databaseTemplate: MergedTemplate = {
801802
id,
802803
owner,
803804
version: 1,

lambdas/backend-api/src/templates/app/template-client.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ import {
1111
TemplateStatus,
1212
$CreateUpdateNonLetter,
1313
} from 'nhs-notify-backend-client';
14-
import {
15-
DatabaseTemplate,
16-
TemplateRepository,
17-
} from '@backend-api/templates/infra';
14+
import { TemplateRepository } from '@backend-api/templates/infra';
1815
import { LETTER_MULTIPART } from 'nhs-notify-backend-client/src/schemas/constants';
19-
import { $CreateUpdateLetterTemplate } from 'nhs-notify-web-template-management-utils';
16+
import {
17+
$CreateUpdateLetterTemplate,
18+
MergedTemplate,
19+
} from 'nhs-notify-web-template-management-utils';
2020
import { logger } from 'nhs-notify-web-template-management-utils/logger';
2121
import { LetterUploadRepository } from '../infra/letter-upload-repository';
2222

@@ -344,7 +344,7 @@ export class TemplateClient implements ITemplateClient {
344344
}
345345

346346
private mapDatabaseObjectToDTO(
347-
databaseTemplate: DatabaseTemplate
347+
databaseTemplate: MergedTemplate
348348
): TemplateDto | undefined {
349349
const { owner: _1, version: _2, ...templateDTO } = databaseTemplate;
350350

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1 @@
1-
export * from './template';
21
export * from './template-repository';

lambdas/backend-api/src/templates/infra/template-repository.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ import {
2323
UpdateCommandInput,
2424
} from '@aws-sdk/lib-dynamodb';
2525
import { ApplicationResult, failure, success, calculateTTL } from '../../utils';
26-
import { DatabaseTemplate } from './template';
2726
import { logger } from 'nhs-notify-web-template-management-utils/logger';
27+
import { MergedTemplate } from 'nhs-notify-web-template-management-utils';
2828

2929
type WithAttachments<T> = T extends { templateType: 'LETTER' }
3030
? T & { files: LetterFiles }
@@ -58,7 +58,7 @@ export class TemplateRepository {
5858
async get(
5959
templateId: string,
6060
owner: string
61-
): Promise<ApplicationResult<DatabaseTemplate>> {
61+
): Promise<ApplicationResult<MergedTemplate>> {
6262
try {
6363
const response = await this.client.send(
6464
new GetCommand({
@@ -71,7 +71,7 @@ export class TemplateRepository {
7171
return failure(ErrorCase.TEMPLATE_NOT_FOUND, 'Template not found');
7272
}
7373

74-
const item = response.Item as DatabaseTemplate;
74+
const item = response.Item as MergedTemplate;
7575

7676
if (item.templateStatus === 'DELETED') {
7777
return failure(ErrorCase.TEMPLATE_NOT_FOUND, 'Template not found');
@@ -87,9 +87,9 @@ export class TemplateRepository {
8787
template: WithAttachments<ValidatedCreateUpdateTemplate>,
8888
owner: string,
8989
initialStatus: TemplateStatus = 'NOT_YET_SUBMITTED'
90-
): Promise<ApplicationResult<DatabaseTemplate>> {
90+
): Promise<ApplicationResult<MergedTemplate>> {
9191
const date = new Date().toISOString();
92-
const entity: DatabaseTemplate = {
92+
const entity: MergedTemplate = {
9393
...template,
9494
id: randomUUID(),
9595
owner,
@@ -115,7 +115,7 @@ export class TemplateRepository {
115115
template: ValidatedCreateUpdateTemplate,
116116
owner: string,
117117
expectedStatus: TemplateStatus
118-
): Promise<ApplicationResult<DatabaseTemplate>> {
118+
): Promise<ApplicationResult<MergedTemplate>> {
119119
const updateExpression = [
120120
'#name = :name',
121121
...this.getChannelAttributeExpressions(template),
@@ -241,7 +241,7 @@ export class TemplateRepository {
241241
templateId: string,
242242
status: Exclude<TemplateStatus, 'SUBMITTED' | 'DELETED'>,
243243
owner: string
244-
): Promise<ApplicationResult<DatabaseTemplate>> {
244+
): Promise<ApplicationResult<MergedTemplate>> {
245245
const updateExpression = ['#templateStatus = :newStatus'];
246246

247247
const expressionAttributeValues: Record<string, string | number> = {
@@ -262,7 +262,7 @@ export class TemplateRepository {
262262
}
263263
}
264264

265-
async list(owner: string): Promise<ApplicationResult<DatabaseTemplate[]>> {
265+
async list(owner: string): Promise<ApplicationResult<MergedTemplate[]>> {
266266
try {
267267
const input: QueryCommandInput = {
268268
TableName: this.templatesTableName,
@@ -278,7 +278,7 @@ export class TemplateRepository {
278278
FilterExpression: '#status <> :deletedStatus',
279279
};
280280

281-
const items: DatabaseTemplate[] = [];
281+
const items: MergedTemplate[] = [];
282282

283283
do {
284284
// eslint-disable-next-line no-await-in-loop
@@ -288,7 +288,7 @@ export class TemplateRepository {
288288

289289
input.ExclusiveStartKey = LastEvaluatedKey;
290290

291-
items.push(...(Items as DatabaseTemplate[]));
291+
items.push(...(Items as MergedTemplate[]));
292292
} while (input.ExclusiveStartKey);
293293

294294
return success(items);
@@ -395,7 +395,7 @@ export class TemplateRepository {
395395
try {
396396
const response = await this.client.send(new UpdateCommand(input));
397397

398-
return success(response.Attributes as DatabaseTemplate);
398+
return success(response.Attributes as MergedTemplate);
399399
} catch (error) {
400400
if (error instanceof ConditionalCheckFailedException) {
401401
if (!error.Item || error.Item.templateStatus.S === 'DELETED') {

lambdas/backend-api/src/templates/infra/template.ts

Lines changed: 0 additions & 23 deletions
This file was deleted.

utils/utils/src/types.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,11 +125,16 @@ export type MergedTemplate = {
125125
templateStatus: TemplateStatus;
126126
templateType: TemplateType;
127127
updatedAt: string;
128-
// owner: string;
129-
// version: number;
128+
} & DbOnlyTemplateProperties;
129+
130+
type DbOnlyTemplateProperties = {
131+
owner: string;
132+
version: number;
130133
};
131134

132-
type AssertExtendsMerged<T extends MergedTemplate> = T;
135+
type AssertExtendsMerged<
136+
T extends Omit<MergedTemplate, keyof DbOnlyTemplateProperties>,
137+
> = T;
133138

134139
// assigned only for the purpose of the assertion
135140
type _Asserted = AssertExtendsMerged<LetterTemplate> &

0 commit comments

Comments
 (0)