Skip to content

Commit c42d9d3

Browse files
author
Fawad Ali
committed
CCM-5756: merge main
2 parents bf54e69 + 38b2585 commit c42d9d3

File tree

224 files changed

+13676
-5900
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

224 files changed

+13676
-5900
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
# dependencies
1818
node_modules
19+
.node-version
1920
*/node_modules
2021
/.pnp
2122
.pnp.js
@@ -47,6 +48,7 @@ npm-debug.log*
4748
# typescript
4849
*.tsbuildinfo
4950
next-env.d.ts
51+
.swc
5052

5153
# reports
5254
reports

amplify/backend.ts

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,3 @@ const attachPolicy = new PolicyStatement({
2020
});
2121

2222
sendEmailLambda.addToRolePolicy(attachPolicy);
23-
24-
backend.data.resources.cfnResources.amplifyDynamoDbTables.SessionStorage.timeToLiveAttribute =
25-
{
26-
attributeName: 'ttl',
27-
enabled: true,
28-
};

amplify/data/resource.ts

Lines changed: 29 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,38 @@
11
import { type ClientSchema, a, defineData } from '@aws-amplify/backend';
22
import { sendEmail } from '../functions/send-email/resource';
33

4-
const templateTypes = ['NHS_APP', 'SMS', 'EMAIL', 'LETTER'] as const;
4+
enum TemplateType {
5+
NHS_APP = 'NHS_APP',
6+
SMS = 'SMS',
7+
EMAIL = 'EMAIL',
8+
LETTER = 'LETTER',
9+
}
510

6-
const SessionStorageModel = {
7-
id: a.string().required(),
8-
templateType: a.enum([...templateTypes, 'UNKNOWN']),
9-
nhsAppTemplateName: a.string().required(),
10-
nhsAppTemplateMessage: a.string().required(),
11-
emailTemplateName: a.string(),
12-
emailTemplateSubjectLine: a.string(),
13-
emailTemplateMessage: a.string(),
14-
smsTemplateName: a.string(),
15-
smsTemplateMessage: a.string(),
16-
ttl: a.integer().required(),
17-
};
11+
enum TemplateStatus {
12+
NOT_YET_SUBMITTED = 'NOT_YET_SUBMITTED',
13+
SUBMITTED = 'SUBMITTED',
14+
}
15+
16+
const templateTypes = [
17+
TemplateType.NHS_APP,
18+
TemplateType.SMS,
19+
TemplateType.EMAIL,
20+
TemplateType.LETTER,
21+
] as const;
22+
23+
const templateStatuses = [
24+
TemplateStatus.NOT_YET_SUBMITTED,
25+
TemplateStatus.SUBMITTED,
26+
] as const;
1827

1928
const TemplateStorageModel = {
2029
id: a.string().required(),
21-
name: a.string().required(),
22-
type: a.enum(templateTypes),
30+
templateType: a.ref('TemplateType').required(),
31+
templateStatus: a.ref('TemplateStatus').required(),
2332
version: a.integer().required(),
24-
fields: a.customType({
25-
subjectLine: a.string(),
26-
content: a.string().required(),
27-
}),
33+
name: a.string().required(),
34+
subject: a.string(),
35+
message: a.string().required(),
2836
};
2937

3038
// eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -34,7 +42,8 @@ const authPermission = (allow: any) =>
3442
: [allow.guest()];
3543

3644
const schema = a.schema({
37-
SessionStorage: a.model(SessionStorageModel).authorization(authPermission),
45+
TemplateType: a.enum(templateTypes),
46+
TemplateStatus: a.enum(templateStatuses),
3847
TemplateStorage: a.model(TemplateStorageModel).authorization(authPermission),
3948
sendEmail: a
4049
.query()

infrastructure/terraform/components/app/amplify_app.tf

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@ resource "aws_amplify_app" "main" {
2727
]
2828

2929
environment_variables = {
30-
NOTIFY_GROUP = var.group
31-
NOTIFY_ENVIRONMENT = var.environment
32-
NOTIFY_DOMAIN_NAME = local.root_domain_name
33-
ACCOUNT_ID = var.aws_account_id
34-
NEXT_PUBLIC_DISABLE_CONTENT = var.disable_content
30+
NOTIFY_GROUP = var.group
31+
NOTIFY_ENVIRONMENT = var.environment
32+
NOTIFY_DOMAIN_NAME = local.root_domain_name
33+
ACCOUNT_ID = var.aws_account_id
34+
NEXT_PUBLIC_DISABLE_CONTENT = var.disable_content
3535
}
3636
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
module "templates_api" {
2+
source = "../../modules/templates-api"
3+
4+
project = var.project
5+
environment = var.environment
6+
aws_account_id = var.aws_account_id
7+
region = var.region
8+
group = var.group
9+
csi = local.csi
10+
log_retention_in_days = var.log_retention_in_days
11+
}

infrastructure/terraform/components/app/outputs.tf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,3 +4,7 @@ output "amplify" {
44
domain_name = local.root_domain_name
55
}
66
}
7+
8+
output "api_invoke_url" {
9+
value = module.templates_api.api_invoke_url
10+
}

infrastructure/terraform/components/branch/module_amplify_branch.tf

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,5 @@ module "amplify_branch" {
2020
environment_variables = {
2121
NOTIFY_SUBDOMAIN = var.environment
2222
NEXT_PUBLIC_BASE_PATH = "/templates~${local.normalised_branch_name}"
23-
MAX_SESSION_LENGTH_IN_SECONDS = 432000 # 5 days in seconds
2423
}
2524
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
resource "aws_cloudwatch_log_group" "lambda" {
2+
name = "/aws/lambda/${var.function_name}"
3+
retention_in_days = var.log_retention_in_days
4+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
resource "aws_iam_role" "lambda_execution_role" {
2+
name = "${var.function_name}-execution-role"
3+
description = "IAM Role for Lambda function ${var.function_name}"
4+
assume_role_policy = data.aws_iam_policy_document.lambda_service_trust_policy.json
5+
}
6+
7+
resource "aws_iam_role_policy" "lambda_execution_policy" {
8+
role = aws_iam_role.lambda_execution_role.name
9+
name = "${var.function_name}-execution-policy"
10+
policy = data.aws_iam_policy_document.lambda_execution_policy.json
11+
}
12+
13+
data "aws_iam_policy_document" "lambda_service_trust_policy" {
14+
statement {
15+
sid = "LambdaAssumeRole"
16+
effect = "Allow"
17+
18+
actions = [
19+
"sts:AssumeRole",
20+
]
21+
22+
principals {
23+
type = "Service"
24+
25+
identifiers = [
26+
"lambda.amazonaws.com"
27+
]
28+
}
29+
}
30+
}
31+
32+
data "aws_iam_policy_document" "lambda_execution_policy" {
33+
source_policy_documents = [
34+
var.execution_role_policy_document
35+
]
36+
37+
statement {
38+
sid = "AllowLogs"
39+
effect = "Allow"
40+
41+
actions = [
42+
"logs:CreateLogStream",
43+
"logs:PutLogEvents"
44+
]
45+
46+
resources = [
47+
"${aws_cloudwatch_log_group.lambda.arn}:log-stream:*",
48+
]
49+
}
50+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
resource "aws_lambda_function" "main" {
2+
description = var.description
3+
function_name = var.function_name
4+
role = aws_iam_role.lambda_execution_role.arn
5+
filename = var.filename
6+
source_code_hash = var.source_code_hash
7+
handler = var.handler
8+
runtime = var.runtime
9+
}

0 commit comments

Comments
 (0)