Skip to content

Commit 3183d9e

Browse files
committed
updated the Kotlin DynamoDB to use Billing Mode
1 parent 8d354d4 commit 3183d9e

File tree

5 files changed

+30
-67
lines changed

5 files changed

+30
-67
lines changed

kotlin/services/dynamodb/src/main/kotlin/com/kotlin/dynamodb/CreateTable.kt

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package com.kotlin.dynamodb
66
// snippet-start:[dynamodb.kotlin.create_table.import]
77
import aws.sdk.kotlin.services.dynamodb.DynamoDbClient
88
import aws.sdk.kotlin.services.dynamodb.model.AttributeDefinition
9+
import aws.sdk.kotlin.services.dynamodb.model.BillingMode
910
import aws.sdk.kotlin.services.dynamodb.model.CreateTableRequest
1011
import aws.sdk.kotlin.services.dynamodb.model.KeySchemaElement
1112
import aws.sdk.kotlin.services.dynamodb.model.KeyType
@@ -62,17 +63,11 @@ suspend fun createNewTable(
6263
keyType = KeyType.Hash
6364
}
6465

65-
val provisionedVal =
66-
ProvisionedThroughput {
67-
readCapacityUnits = 10
68-
writeCapacityUnits = 10
69-
}
70-
7166
val request =
7267
CreateTableRequest {
7368
attributeDefinitions = listOf(attDef)
7469
keySchema = listOf(keySchemaVal)
75-
provisionedThroughput = provisionedVal
70+
billingMode = BillingMode.PayPerRequest
7671
tableName = tableNameVal
7772
}
7873

kotlin/services/dynamodb/src/main/kotlin/com/kotlin/dynamodb/Scenario.kt renamed to kotlin/services/dynamodb/src/main/kotlin/com/kotlin/dynamodb/scenario/Scenario.kt

Lines changed: 5 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
22
// SPDX-License-Identifier: Apache-2.0
33

4-
package com.kotlin.dynamodb
4+
package com.kotlin.dynamodb.scenario
55

66
// snippet-start:[dynamodb.kotlin.scenario.import]
77
import aws.sdk.kotlin.services.dynamodb.DynamoDbClient
88
import aws.sdk.kotlin.services.dynamodb.model.AttributeDefinition
99
import aws.sdk.kotlin.services.dynamodb.model.AttributeValue
10+
import aws.sdk.kotlin.services.dynamodb.model.BillingMode
1011
import aws.sdk.kotlin.services.dynamodb.model.CreateTableRequest
1112
import aws.sdk.kotlin.services.dynamodb.model.DeleteTableRequest
1213
import aws.sdk.kotlin.services.dynamodb.model.GetItemRequest
1314
import aws.sdk.kotlin.services.dynamodb.model.KeySchemaElement
1415
import aws.sdk.kotlin.services.dynamodb.model.KeyType
15-
import aws.sdk.kotlin.services.dynamodb.model.ProvisionedThroughput
1616
import aws.sdk.kotlin.services.dynamodb.model.PutItemRequest
1717
import aws.sdk.kotlin.services.dynamodb.model.QueryRequest
1818
import aws.sdk.kotlin.services.dynamodb.model.ScalarAttributeType
@@ -23,7 +23,7 @@ import com.fasterxml.jackson.databind.JsonNode
2323
import com.fasterxml.jackson.databind.ObjectMapper
2424
import com.fasterxml.jackson.databind.node.ObjectNode
2525
import java.io.File
26-
import kotlin.system.exitProcess
26+
2727
// snippet-end:[dynamodb.kotlin.scenario.import]
2828

2929
/**
@@ -36,22 +36,8 @@ https://docs.aws.amazon.com/sdk-for-kotlin/latest/developer-guide/setup.html
3636

3737
// snippet-start:[dynamodb.kotlin.scenario.main]
3838
suspend fun main(args: Array<String>) {
39-
val usage = """
40-
Usage:
41-
<fileName>
42-
43-
Where:
44-
fileName - The path to the moviedata.json you can download from the Amazon DynamoDB Developer Guide.
45-
"""
46-
47-
if (args.size != 1) {
48-
println(usage)
49-
exitProcess(1)
50-
}
51-
52-
// Get the moviedata.json from the Amazon DynamoDB Developer Guide.
5339
val tableName = "Movies"
54-
val fileName = args[0]
40+
val fileName = "../../../resources/sample_files/movies.json"
5541
val partitionAlias = "#a"
5642

5743
println("Creating an Amazon DynamoDB table named Movies with a key named id and a sort key named title.")
@@ -93,17 +79,11 @@ suspend fun createScenarioTable(
9379
keyType = KeyType.Range
9480
}
9581

96-
val provisionedVal =
97-
ProvisionedThroughput {
98-
readCapacityUnits = 10
99-
writeCapacityUnits = 10
100-
}
101-
10282
val request =
10383
CreateTableRequest {
10484
attributeDefinitions = listOf(attDef, attDef1)
10585
keySchema = listOf(keySchemaVal, keySchemaVal1)
106-
provisionedThroughput = provisionedVal
86+
billingMode = BillingMode.PayPerRequest
10787
tableName = tableNameVal
10888
}
10989

kotlin/services/dynamodb/src/main/kotlin/com/kotlin/dynamodb/ScenarioPartiQ.kt renamed to kotlin/services/dynamodb/src/main/kotlin/com/kotlin/dynamodb/scenario/ScenarioPartiQ.kt

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
22
// SPDX-License-Identifier: Apache-2.0
33

4-
package com.kotlin.dynamodb
4+
package com.kotlin.dynamodb.scenario
55

66
// snippet-start:[dynamodb.kotlin.scenario.partiql.import]
77
import aws.sdk.kotlin.services.dynamodb.DynamoDbClient
88
import aws.sdk.kotlin.services.dynamodb.model.AttributeDefinition
99
import aws.sdk.kotlin.services.dynamodb.model.AttributeValue
10+
import aws.sdk.kotlin.services.dynamodb.model.BillingMode
1011
import aws.sdk.kotlin.services.dynamodb.model.CreateTableRequest
1112
import aws.sdk.kotlin.services.dynamodb.model.DeleteTableRequest
1213
import aws.sdk.kotlin.services.dynamodb.model.ExecuteStatementRequest
1314
import aws.sdk.kotlin.services.dynamodb.model.ExecuteStatementResponse
1415
import aws.sdk.kotlin.services.dynamodb.model.KeySchemaElement
1516
import aws.sdk.kotlin.services.dynamodb.model.KeyType
16-
import aws.sdk.kotlin.services.dynamodb.model.ProvisionedThroughput
1717
import aws.sdk.kotlin.services.dynamodb.model.ScalarAttributeType
1818
import aws.sdk.kotlin.services.dynamodb.waiters.waitUntilTableExists
1919
import com.fasterxml.jackson.core.JsonFactory
@@ -101,17 +101,11 @@ suspend fun createTablePartiQL(
101101
keyType = KeyType.Range
102102
}
103103

104-
val provisionedVal =
105-
ProvisionedThroughput {
106-
readCapacityUnits = 10
107-
writeCapacityUnits = 10
108-
}
109-
110104
val request =
111105
CreateTableRequest {
112106
attributeDefinitions = listOf(attDef, attDef1)
113107
keySchema = listOf(keySchemaVal, keySchemaVal1)
114-
provisionedThroughput = provisionedVal
108+
billingMode = BillingMode.PayPerRequest
115109
tableName = tableNameVal
116110
}
117111

kotlin/services/dynamodb/src/main/kotlin/com/kotlin/dynamodb/ScenarioPartiQLBatch.kt renamed to kotlin/services/dynamodb/src/main/kotlin/com/kotlin/dynamodb/scenario/ScenarioPartiQLBatch.kt

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
22
// SPDX-License-Identifier: Apache-2.0
33

4-
package com.kotlin.dynamodb
4+
package com.kotlin.dynamodb.scenario
55

66
// snippet-start:[dynamodb.kotlin.scenario.partiql.batch.import]
77
import aws.sdk.kotlin.services.dynamodb.DynamoDbClient
88
import aws.sdk.kotlin.services.dynamodb.model.AttributeDefinition
99
import aws.sdk.kotlin.services.dynamodb.model.AttributeValue
1010
import aws.sdk.kotlin.services.dynamodb.model.BatchExecuteStatementRequest
1111
import aws.sdk.kotlin.services.dynamodb.model.BatchStatementRequest
12+
import aws.sdk.kotlin.services.dynamodb.model.BillingMode
1213
import aws.sdk.kotlin.services.dynamodb.model.CreateTableRequest
1314
import aws.sdk.kotlin.services.dynamodb.model.DeleteTableRequest
1415
import aws.sdk.kotlin.services.dynamodb.model.KeySchemaElement
1516
import aws.sdk.kotlin.services.dynamodb.model.KeyType
16-
import aws.sdk.kotlin.services.dynamodb.model.ProvisionedThroughput
1717
import aws.sdk.kotlin.services.dynamodb.model.ScalarAttributeType
1818
import aws.sdk.kotlin.services.dynamodb.waiters.waitUntilTableExists
1919
// snippet-end:[dynamodb.kotlin.scenario.partiql.batch.import]
@@ -75,17 +75,11 @@ suspend fun createTablePartiQLBatch(
7575
keyType = KeyType.Range
7676
}
7777

78-
val provisionedVal =
79-
ProvisionedThroughput {
80-
readCapacityUnits = 10
81-
writeCapacityUnits = 10
82-
}
83-
8478
val request =
8579
CreateTableRequest {
8680
attributeDefinitions = listOf(attDef, attDef1)
8781
keySchema = listOf(keySchemaVal, keySchemaVal1)
88-
provisionedThroughput = provisionedVal
82+
billingMode = BillingMode.PayPerRequest
8983
tableName = tableNameVal
9084
}
9185

kotlin/services/dynamodb/src/test/kotlin/DynamoDB.kt

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,31 +6,31 @@ import aws.sdk.kotlin.services.secretsmanager.SecretsManagerClient
66
import aws.sdk.kotlin.services.secretsmanager.model.GetSecretValueRequest
77
import com.google.gson.Gson
88
import com.kotlin.dynamodb.createNewTable
9-
import com.kotlin.dynamodb.createScenarioTable
10-
import com.kotlin.dynamodb.createTablePartiQL
11-
import com.kotlin.dynamodb.createTablePartiQLBatch
12-
import com.kotlin.dynamodb.deletIssuesTable
9+
import com.kotlin.dynamodb.scenario.createScenarioTable
10+
import com.kotlin.dynamodb.scenario.createTablePartiQL
11+
import com.kotlin.dynamodb.scenario.createTablePartiQLBatch
12+
import com.kotlin.dynamodb.scenario.deletIssuesTable
1313
import com.kotlin.dynamodb.deleteDynamoDBTable
14-
import com.kotlin.dynamodb.deleteItemsBatch
15-
import com.kotlin.dynamodb.deleteTablePartiQL
16-
import com.kotlin.dynamodb.deleteTablePartiQLBatch
14+
import com.kotlin.dynamodb.scenario.deleteItemsBatch
15+
import com.kotlin.dynamodb.scenario.deleteTablePartiQL
16+
import com.kotlin.dynamodb.scenario.deleteTablePartiQLBatch
1717
import com.kotlin.dynamodb.describeDymamoDBTable
18-
import com.kotlin.dynamodb.getMovie
19-
import com.kotlin.dynamodb.getMoviePartiQL
18+
import com.kotlin.dynamodb.scenario.getMovie
19+
import com.kotlin.dynamodb.scenario.getMoviePartiQL
2020
import com.kotlin.dynamodb.getSpecificItem
2121
import com.kotlin.dynamodb.listAllTables
22-
import com.kotlin.dynamodb.loadData
23-
import com.kotlin.dynamodb.loadDataPartiQL
22+
import com.kotlin.dynamodb.scenario.loadData
23+
import com.kotlin.dynamodb.scenario.loadDataPartiQL
2424
import com.kotlin.dynamodb.putItemInTable
25-
import com.kotlin.dynamodb.putRecordBatch
26-
import com.kotlin.dynamodb.putRecordPartiQL
25+
import com.kotlin.dynamodb.scenario.putRecordBatch
26+
import com.kotlin.dynamodb.scenario.putRecordPartiQL
2727
import com.kotlin.dynamodb.queryDynTable
28-
import com.kotlin.dynamodb.queryTablePartiQL
28+
import com.kotlin.dynamodb.scenario.queryTablePartiQL
2929
import com.kotlin.dynamodb.scanItems
30-
import com.kotlin.dynamodb.scanMovies
30+
import com.kotlin.dynamodb.scenario.scanMovies
3131
import com.kotlin.dynamodb.updateTableItem
32-
import com.kotlin.dynamodb.updateTableItemBatchBatch
33-
import com.kotlin.dynamodb.updateTableItemPartiQL
32+
import com.kotlin.dynamodb.scenario.updateTableItemBatchBatch
33+
import com.kotlin.dynamodb.scenario.updateTableItemPartiQL
3434
import kotlinx.coroutines.runBlocking
3535
import org.junit.jupiter.api.BeforeAll
3636
import org.junit.jupiter.api.DisplayName

0 commit comments

Comments
 (0)