Skip to content

Commit 1fc872c

Browse files
authored
[NDR-328] Add the new CORE dynamodb table (#525)
1 parent 9f756ab commit 1fc872c

File tree

5 files changed

+69
-14
lines changed

5 files changed

+69
-14
lines changed

infrastructure/dynamo_db.tf

Lines changed: 51 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ module "document_reference_dynamodb_table" {
22
source = "./modules/dynamo_db"
33
table_name = var.docstore_dynamodb_table_name
44
hash_key = "ID"
5-
deletion_protection_enabled = local.is_production
5+
deletion_protection_enabled = var.deletion_protection_enabled
66
stream_enabled = true
77
stream_view_type = "OLD_IMAGE"
88
ttl_enabled = true
@@ -45,7 +45,7 @@ module "cloudfront_edge_dynamodb_table" {
4545
source = "./modules/dynamo_db"
4646
table_name = var.cloudfront_edge_table_name
4747
hash_key = "ID"
48-
deletion_protection_enabled = local.is_production
48+
deletion_protection_enabled = var.deletion_protection_enabled
4949
stream_enabled = false
5050
ttl_enabled = true
5151
ttl_attribute_name = "TTL"
@@ -66,7 +66,7 @@ module "lloyd_george_reference_dynamodb_table" {
6666
source = "./modules/dynamo_db"
6767
table_name = var.lloyd_george_dynamodb_table_name
6868
hash_key = "ID"
69-
deletion_protection_enabled = local.is_production
69+
deletion_protection_enabled = var.deletion_protection_enabled
7070
stream_enabled = true
7171
stream_view_type = "OLD_IMAGE"
7272
ttl_enabled = true
@@ -127,7 +127,7 @@ module "unstitched_lloyd_george_reference_dynamodb_table" {
127127
source = "./modules/dynamo_db"
128128
table_name = var.unstitched_lloyd_george_dynamodb_table_name
129129
hash_key = "ID"
130-
deletion_protection_enabled = local.is_production
130+
deletion_protection_enabled = var.deletion_protection_enabled
131131
stream_enabled = true
132132
stream_view_type = "OLD_IMAGE"
133133
ttl_enabled = true
@@ -170,7 +170,7 @@ module "zip_store_reference_dynamodb_table" {
170170
source = "./modules/dynamo_db"
171171
table_name = var.zip_store_dynamodb_table_name
172172
hash_key = "ID"
173-
deletion_protection_enabled = local.is_production
173+
deletion_protection_enabled = var.deletion_protection_enabled
174174
stream_enabled = true
175175
ttl_enabled = false
176176

@@ -201,7 +201,7 @@ module "stitch_metadata_reference_dynamodb_table" {
201201
source = "./modules/dynamo_db"
202202
table_name = var.stitch_metadata_dynamodb_table_name
203203
hash_key = "ID"
204-
deletion_protection_enabled = local.is_production
204+
deletion_protection_enabled = var.deletion_protection_enabled
205205
stream_enabled = true
206206
ttl_enabled = true
207207
ttl_attribute_name = "ExpireAt"
@@ -233,7 +233,7 @@ module "auth_state_dynamodb_table" {
233233
source = "./modules/dynamo_db"
234234
table_name = var.auth_state_dynamodb_table_name
235235
hash_key = "State"
236-
deletion_protection_enabled = local.is_production
236+
deletion_protection_enabled = var.deletion_protection_enabled
237237
stream_enabled = false
238238
ttl_enabled = true
239239
ttl_attribute_name = "TimeToExist"
@@ -260,7 +260,7 @@ module "auth_session_dynamodb_table" {
260260
source = "./modules/dynamo_db"
261261
table_name = var.auth_session_dynamodb_table_name
262262
hash_key = "NDRSessionId"
263-
deletion_protection_enabled = local.is_production
263+
deletion_protection_enabled = var.deletion_protection_enabled
264264
stream_enabled = false
265265
ttl_enabled = true
266266
ttl_attribute_name = "TimeToExist"
@@ -287,7 +287,7 @@ module "bulk_upload_report_dynamodb_table" {
287287
source = "./modules/dynamo_db"
288288
table_name = var.bulk_upload_report_dynamodb_table_name
289289
hash_key = "ID"
290-
deletion_protection_enabled = local.is_production
290+
deletion_protection_enabled = var.deletion_protection_enabled
291291
stream_enabled = false
292292
ttl_enabled = false
293293
point_in_time_recovery_enabled = !local.is_sandbox
@@ -334,7 +334,7 @@ module "statistics_dynamodb_table" {
334334
table_name = var.statistics_dynamodb_table_name
335335
hash_key = "Date"
336336
sort_key = "StatisticID"
337-
deletion_protection_enabled = local.is_production
337+
deletion_protection_enabled = var.deletion_protection_enabled
338338
stream_enabled = false
339339
ttl_enabled = false
340340
point_in_time_recovery_enabled = !local.is_sandbox
@@ -372,7 +372,7 @@ module "access_audit_dynamodb_table" {
372372
table_name = var.access_audit_dynamodb_table_name
373373
hash_key = "Type"
374374
sort_key = "ID"
375-
deletion_protection_enabled = local.is_production
375+
deletion_protection_enabled = var.deletion_protection_enabled
376376
stream_enabled = false
377377
ttl_enabled = false
378378
point_in_time_recovery_enabled = !local.is_sandbox
@@ -426,7 +426,7 @@ module "pdm_dynamodb_table" {
426426
source = "./modules/dynamo_db"
427427
table_name = var.pdm_dynamodb_table_name
428428
hash_key = "ID"
429-
deletion_protection_enabled = local.is_production
429+
deletion_protection_enabled = var.deletion_protection_enabled
430430
stream_enabled = true
431431
stream_view_type = "OLD_IMAGE"
432432
ttl_enabled = true
@@ -494,12 +494,50 @@ module "pdm_dynamodb_table" {
494494
}
495495

496496

497+
module "core_dynamodb_table" {
498+
source = "./modules/dynamo_db"
499+
table_name = var.core_dynamodb_table_name
500+
hash_key = "NhsNumber"
501+
sort_key = "ID"
502+
deletion_protection_enabled = var.deletion_protection_enabled
503+
stream_enabled = true
504+
stream_view_type = "OLD_IMAGE"
505+
ttl_enabled = true
506+
ttl_attribute_name = "TTL"
507+
point_in_time_recovery_enabled = !local.is_sandbox
508+
attributes = [
509+
{
510+
name = "ID"
511+
type = "S"
512+
},
513+
{
514+
name = "NhsNumber"
515+
type = "S"
516+
},
517+
{
518+
name = "DocumentSnomedCodeType"
519+
type = "S"
520+
}
521+
]
522+
global_secondary_indexes = [
523+
{
524+
name = "idx_gsi_snomed_code"
525+
hash_key = "DocumentSnomedCodeType"
526+
range_key = "ID"
527+
projection_type = "ALL"
528+
}
529+
]
530+
environment = var.environment
531+
owner = var.owner
532+
}
533+
534+
497535
module "alarm_state_history_table" {
498536
source = "./modules/dynamo_db"
499537
table_name = var.alarm_state_history_table_name
500538
hash_key = "AlarmNameMetric"
501539
sort_key = "TimeCreated"
502-
deletion_protection_enabled = local.is_production
540+
deletion_protection_enabled = var.deletion_protection_enabled
503541
point_in_time_recovery_enabled = false
504542
stream_enabled = false
505543
ttl_enabled = true

infrastructure/modules/dynamo_db/variable.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ variable "hash_key" {
1717
}
1818

1919
variable "sort_key" {
20-
description = "Optional sort key for composite primary key."
20+
description = "Optional range/sort key for composite primary key."
2121
type = string
2222
default = null
2323
}

infrastructure/preprod.tfvars

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,5 @@ standalone_vpc_ig_tag = "ndr-pre-prod"
1010
cloud_security_email_param_environment = "pre-prod"
1111

1212
apim_environment = "int."
13+
14+
deletion_protection_enabled = true

infrastructure/prod.tfvars

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,5 @@ standalone_vpc_ig_tag = "ndr-prod"
1010
cloud_security_email_param_environment = "prod"
1111

1212
apim_environment = ""
13+
14+
deletion_protection_enabled = true

infrastructure/variable.tf

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,12 @@ variable "document_pending_review_bucket_name" {
9494

9595
# DynamoDB Table Variables
9696

97+
variable "core_dynamodb_table_name" {
98+
description = "The name of the DynamoDB table to be use for NHS Core metadata."
99+
type = string
100+
default = "COREDocumentMetadata"
101+
}
102+
97103
variable "pdm_dynamodb_table_name" {
98104
description = "The name of the DynamoDB table to be use for PDM metadata."
99105
type = string
@@ -177,6 +183,13 @@ variable "document_review_table_name" {
177183
type = string
178184
default = "DocumentReview"
179185
}
186+
187+
variable "deletion_protection_enabled" {
188+
description = "Should dynamodb deletion protection be enabled?"
189+
type = bool
190+
default = false
191+
}
192+
180193
# VPC Variables
181194

182195
variable "standalone_vpc_tag" {

0 commit comments

Comments
 (0)