Skip to content

Commit 4e308ea

Browse files
committed
Add TTL in epoch seconds
1 parent 267cdc2 commit 4e308ea

4 files changed

Lines changed: 12 additions & 3 deletions

File tree

cdk/lib/__snapshots__/liveactivities.test.ts.snap

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -885,6 +885,10 @@ exports[`The LiveActivities stack matches the snapshot for CODE 1`] = `
885885
"Value": "CODE",
886886
},
887887
],
888+
"TimeToLiveSpecification": {
889+
"AttributeName": "ttlInEpochSeconds",
890+
"Enabled": true,
891+
},
888892
},
889893
"Type": "AWS::DynamoDB::Table",
890894
"UpdateReplacePolicy": "Retain",

cdk/lib/liveactivities.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ export class LiveActivities extends GuStack {
2424
tableName: dynamoTableName,
2525
partitionKey: { name: 'id', type: AttributeType.STRING },
2626
billingMode: BillingMode.PAY_PER_REQUEST,
27+
timeToLiveAttribute: "ttlInEpochSeconds"
2728
});
29+
2830
Tags.of(dynamoTable).add('devx-backup-enabled', 'true');
2931

3032
const channelManagerDlq = new Queue(this, 'ChannelManagerDlq', {

liveactivities/src/main/scala/com/gu/liveactivities/models/LiveActivities.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,9 @@ case class LiveActivityMapping(
6161
data: Option[LiveActivityData],
6262
lastEventId: Option[String],
6363
lastEventAt: Option[ZonedDateTime],
64-
createdAt: ZonedDateTime,
65-
lastModifiedAt: ZonedDateTime
64+
createdAt: ZonedDateTime,
65+
lastModifiedAt: ZonedDateTime,
66+
ttlInEpochSeconds: Option[Long] = None
6667
)
6768

6869
object LiveActivityMapping {

liveactivities/src/main/scala/com/gu/liveactivities/service/LiveActivityChannelRepository.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@ class LiveActivityChannelRepository(client: DynamoDbAsyncClient, tableName: Stri
5959
eventData: Option[LiveActivityData],
6060
): Future[Unit] = {
6161
val createdAt = ZonedDateTime.now()
62+
val ttlEpochSeconds = createdAt.toEpochSecond + 14 * 24 * 3600 // 15=4 days from now
6263
val newItem = new LiveActivityMapping(
6364
id = id,
6465
channelId = channelId,
@@ -68,7 +69,8 @@ class LiveActivityChannelRepository(client: DynamoDbAsyncClient, tableName: Stri
6869
lastEventId = None,
6970
lastEventAt = None,
7071
createdAt = createdAt,
71-
lastModifiedAt = createdAt
72+
lastModifiedAt = createdAt,
73+
ttlInEpochSeconds = Some(ttlEpochSeconds)
7274
)
7375
scanamo.exec {
7476
table.when(attributeNotExists(idKeyName)).put(newItem)

0 commit comments

Comments
 (0)