Skip to content

Commit 929036f

Browse files
committed
split containers into separate files
1 parent 75b6269 commit 929036f

29 files changed

+226
-187
lines changed

lambdas/backend-api/src/templates/container.ts

Lines changed: 0 additions & 166 deletions
This file was deleted.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import { logger } from 'nhs-notify-web-template-management-utils/logger';
2+
import { templateRepositoryContainer } from './templates-repository';
3+
import { letterFileRepositoryContainer } from './letter-file-repository';
4+
5+
export const letterFileRepositoryAndTemplateRepositoryContainer = () => ({
6+
...templateRepositoryContainer(),
7+
...letterFileRepositoryContainer(),
8+
logger,
9+
});
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { logger } from 'nhs-notify-web-template-management-utils/logger';
2+
import { loadConfig } from '../infra/config';
3+
import { LetterFileRepository } from '../infra/letter-file-repository';
4+
5+
export const letterFileRepositoryContainer = () => {
6+
const { quarantineBucket, internalBucket, downloadBucket } = loadConfig();
7+
8+
const letterFileRepository = new LetterFileRepository(
9+
quarantineBucket,
10+
internalBucket,
11+
downloadBucket
12+
);
13+
14+
return {
15+
letterFileRepository,
16+
logger,
17+
};
18+
};
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
2+
import { SSMClient } from '@aws-sdk/client-ssm';
3+
import { DynamoDBDocumentClient } from '@aws-sdk/lib-dynamodb';
4+
import NodeCache from 'node-cache';
5+
import { RoutingConfigClient } from '../app/routing-config-client';
6+
import { loadConfig } from '../infra/config';
7+
import { ClientConfigRepository } from '../infra/client-config-repository';
8+
import { RoutingConfigRepository } from '../infra/routing-config-repository';
9+
10+
const awsConfig = { region: 'eu-west-2' };
11+
12+
export const routingConfigContainer = () => {
13+
const config = loadConfig();
14+
15+
const ddbDocClient = DynamoDBDocumentClient.from(
16+
new DynamoDBClient(awsConfig),
17+
{
18+
marshallOptions: { removeUndefinedValues: true },
19+
}
20+
);
21+
22+
const ssmClient = new SSMClient(awsConfig);
23+
24+
const clientConfigRepository = new ClientConfigRepository(
25+
config.clientConfigSsmKeyPrefix,
26+
ssmClient,
27+
new NodeCache({ stdTTL: config.clientConfigTtlSeconds })
28+
);
29+
30+
const routingConfigRepository = new RoutingConfigRepository(
31+
ddbDocClient,
32+
config.routingConfigTableName
33+
);
34+
35+
const routingConfigClient = new RoutingConfigClient(
36+
routingConfigRepository,
37+
clientConfigRepository
38+
);
39+
40+
return {
41+
routingConfigClient,
42+
};
43+
};
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import { SESClient } from '@aws-sdk/client-ses';
2+
import { EmailClient } from 'nhs-notify-web-template-management-utils/email-client';
3+
import { logger } from 'nhs-notify-web-template-management-utils/logger';
4+
import { loadConfig } from '../infra/config';
5+
import { templatesContainer } from './templates';
6+
7+
export const submitTemplateContainer = () => {
8+
const {
9+
templateSubmittedSenderEmailAddress,
10+
supplierRecipientEmailAddresses,
11+
} = loadConfig();
12+
13+
const sesClient = new SESClient({ region: 'eu-west-2' });
14+
15+
const emailClient = new EmailClient(
16+
sesClient,
17+
templateSubmittedSenderEmailAddress,
18+
supplierRecipientEmailAddresses,
19+
logger
20+
);
21+
22+
return {
23+
...templatesContainer(),
24+
emailClient,
25+
};
26+
};
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
2+
import { DynamoDBDocumentClient } from '@aws-sdk/lib-dynamodb';
3+
import { logger } from 'nhs-notify-web-template-management-utils/logger';
4+
import { TemplateRepository } from '../infra';
5+
import { loadConfig } from '../infra/config';
6+
7+
export const templateRepositoryContainer = () => {
8+
const { templatesTableName } = loadConfig();
9+
10+
const ddbDocClient = DynamoDBDocumentClient.from(
11+
new DynamoDBClient({ region: 'eu-west-2' }),
12+
{
13+
marshallOptions: { removeUndefinedValues: true },
14+
}
15+
);
16+
17+
const templateRepository = new TemplateRepository(
18+
ddbDocClient,
19+
templatesTableName
20+
);
21+
22+
return {
23+
templateRepository,
24+
logger,
25+
};
26+
};
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
2+
import { SQSClient } from '@aws-sdk/client-sqs';
3+
import { SSMClient } from '@aws-sdk/client-ssm';
4+
import { DynamoDBDocumentClient } from '@aws-sdk/lib-dynamodb';
5+
import NodeCache from 'node-cache';
6+
import { logger } from 'nhs-notify-web-template-management-utils/logger';
7+
import { TemplateRepository } from '../infra';
8+
import { loadConfig } from '../infra/config';
9+
import { ClientConfigRepository } from '../infra/client-config-repository';
10+
import { LetterUploadRepository } from '../infra/letter-upload-repository';
11+
import { ProofingQueue } from '../infra/proofing-queue';
12+
import { TemplateClient } from '../app/template-client';
13+
14+
const awsConfig = { region: 'eu-west-2' };
15+
16+
export const templatesContainer = () => {
17+
const config = loadConfig();
18+
19+
const ddbDocClient = DynamoDBDocumentClient.from(
20+
new DynamoDBClient(awsConfig),
21+
{
22+
marshallOptions: { removeUndefinedValues: true },
23+
}
24+
);
25+
26+
const sqsClient = new SQSClient(awsConfig);
27+
const ssmClient = new SSMClient(awsConfig);
28+
29+
const templateRepository = new TemplateRepository(
30+
ddbDocClient,
31+
config.templatesTableName
32+
);
33+
34+
const letterUploadRepository = new LetterUploadRepository(
35+
config.quarantineBucket,
36+
config.internalBucket,
37+
config.downloadBucket
38+
);
39+
40+
const proofingQueue = new ProofingQueue(
41+
sqsClient,
42+
config.requestProofQueueUrl
43+
);
44+
45+
const clientConfigRepository = new ClientConfigRepository(
46+
config.clientConfigSsmKeyPrefix,
47+
ssmClient,
48+
new NodeCache({ stdTTL: config.clientConfigTtlSeconds })
49+
);
50+
51+
const templateClient = new TemplateClient(
52+
templateRepository,
53+
letterUploadRepository,
54+
proofingQueue,
55+
config.defaultLetterSupplier,
56+
clientConfigRepository,
57+
logger
58+
);
59+
60+
return {
61+
templateClient,
62+
};
63+
};
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { logger } from 'nhs-notify-web-template-management-utils/logger';
2+
import { loadConfig } from '../infra/config';
3+
import { LetterUploadRepository } from '../infra/letter-upload-repository';
4+
import { templateRepositoryContainer } from './templates-repository';
5+
6+
export const validateLetterTemplateFilesContainer = () => {
7+
const { quarantineBucket, internalBucket, downloadBucket } = loadConfig();
8+
9+
const letterUploadRepository = new LetterUploadRepository(
10+
quarantineBucket,
11+
internalBucket,
12+
downloadBucket
13+
);
14+
15+
return {
16+
...templateRepositoryContainer(),
17+
letterUploadRepository,
18+
logger,
19+
};
20+
};
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
import { createHandler } from './api/copy-scanned-object-to-internal';
2-
import { letterFileRepositoryContainer } from './container';
2+
import { letterFileRepositoryContainer } from './container/letter-file-repository';
33

44
export const handler = createHandler(letterFileRepositoryContainer());
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
import { createHandler } from './api/count-routing-configs';
2-
import { routingConfigContainer } from './container';
2+
import { routingConfigContainer } from './container/routing-config';
33

44
export const handler = createHandler(routingConfigContainer());

0 commit comments

Comments
 (0)