aws_sdk_keyspaces/operation/create_table/
_create_table_input.rs

1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2#[allow(missing_docs)] // documentation missing in model
3#[non_exhaustive]
4#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
5pub struct CreateTableInput {
6    /// <p>The name of the keyspace that the table is going to be created in.</p>
7    pub keyspace_name: ::std::option::Option<::std::string::String>,
8    /// <p>The name of the table.</p>
9    pub table_name: ::std::option::Option<::std::string::String>,
10    /// <p>The <code>schemaDefinition</code> consists of the following parameters.</p>
11    /// <p>For each column to be created:</p>
12    /// <ul>
13    /// <li>
14    /// <p><code>name</code> - The name of the column.</p></li>
15    /// <li>
16    /// <p><code>type</code> - An Amazon Keyspaces data type. For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/cql.elements.html#cql.data-types">Data types</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p></li>
17    /// </ul>
18    /// <p>The primary key of the table consists of the following columns:</p>
19    /// <ul>
20    /// <li>
21    /// <p><code>partitionKeys</code> - The partition key can be a single column, or it can be a compound value composed of two or more columns. The partition key portion of the primary key is required and determines how Amazon Keyspaces stores your data.</p></li>
22    /// <li>
23    /// <p><code>name</code> - The name of each partition key column.</p></li>
24    /// <li>
25    /// <p><code>clusteringKeys</code> - The optional clustering column portion of your primary key determines how the data is clustered and sorted within each partition.</p></li>
26    /// <li>
27    /// <p><code>name</code> - The name of the clustering column.</p></li>
28    /// <li>
29    /// <p><code>orderBy</code> - Sets the ascendant (<code>ASC</code>) or descendant (<code>DESC</code>) order modifier.</p>
30    /// <p>To define a column as static use <code>staticColumns</code> - Static columns store values that are shared by all rows in the same partition:</p></li>
31    /// <li>
32    /// <p><code>name</code> - The name of the column.</p></li>
33    /// <li>
34    /// <p><code>type</code> - An Amazon Keyspaces data type.</p></li>
35    /// </ul>
36    pub schema_definition: ::std::option::Option<crate::types::SchemaDefinition>,
37    /// <p>This parameter allows to enter a description of the table.</p>
38    pub comment: ::std::option::Option<crate::types::Comment>,
39    /// <p>Specifies the read/write throughput capacity mode for the table. The options are:</p>
40    /// <ul>
41    /// <li>
42    /// <p><code>throughputMode:PAY_PER_REQUEST</code> and</p></li>
43    /// <li>
44    /// <p><code>throughputMode:PROVISIONED</code> - Provisioned capacity mode requires <code>readCapacityUnits</code> and <code>writeCapacityUnits</code> as input.</p></li>
45    /// </ul>
46    /// <p>The default is <code>throughput_mode:PAY_PER_REQUEST</code>.</p>
47    /// <p>For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/ReadWriteCapacityMode.html">Read/write capacity modes</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
48    pub capacity_specification: ::std::option::Option<crate::types::CapacitySpecification>,
49    /// <p>Specifies how the encryption key for encryption at rest is managed for the table. You can choose one of the following KMS key (KMS key):</p>
50    /// <ul>
51    /// <li>
52    /// <p><code>type:AWS_OWNED_KMS_KEY</code> - This key is owned by Amazon Keyspaces.</p></li>
53    /// <li>
54    /// <p><code>type:CUSTOMER_MANAGED_KMS_KEY</code> - This key is stored in your account and is created, owned, and managed by you. This option requires the <code>kms_key_identifier</code> of the KMS key in Amazon Resource Name (ARN) format as input.</p></li>
55    /// </ul>
56    /// <p>The default is <code>type:AWS_OWNED_KMS_KEY</code>.</p>
57    /// <p>For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/EncryptionAtRest.html">Encryption at rest</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
58    pub encryption_specification: ::std::option::Option<crate::types::EncryptionSpecification>,
59    /// <p>Specifies if <code>pointInTimeRecovery</code> is enabled or disabled for the table. The options are:</p>
60    /// <ul>
61    /// <li>
62    /// <p><code>status=ENABLED</code></p></li>
63    /// <li>
64    /// <p><code>status=DISABLED</code></p></li>
65    /// </ul>
66    /// <p>If it's not specified, the default is <code>status=DISABLED</code>.</p>
67    /// <p>For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/PointInTimeRecovery.html">Point-in-time recovery</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
68    pub point_in_time_recovery: ::std::option::Option<crate::types::PointInTimeRecovery>,
69    /// <p>Enables Time to Live custom settings for the table. The options are:</p>
70    /// <ul>
71    /// <li>
72    /// <p><code>status:enabled</code></p></li>
73    /// <li>
74    /// <p><code>status:disabled</code></p></li>
75    /// </ul>
76    /// <p>The default is <code>status:disabled</code>. After <code>ttl</code> is enabled, you can't disable it for the table.</p>
77    /// <p>For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/TTL.html">Expiring data by using Amazon Keyspaces Time to Live (TTL)</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
78    pub ttl: ::std::option::Option<crate::types::TimeToLive>,
79    /// <p>The default Time to Live setting in seconds for the table.</p>
80    /// <p>For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/TTL-how-it-works.html#ttl-howitworks_default_ttl">Setting the default TTL value for a table</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
81    pub default_time_to_live: ::std::option::Option<i32>,
82    /// <p>A list of key-value pair tags to be attached to the resource.</p>
83    /// <p>For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/tagging-keyspaces.html">Adding tags and labels to Amazon Keyspaces resources</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
84    pub tags: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>,
85    /// <p>Enables client-side timestamps for the table. By default, the setting is disabled. You can enable client-side timestamps with the following option:</p>
86    /// <ul>
87    /// <li>
88    /// <p><code>status: "enabled"</code></p></li>
89    /// </ul>
90    /// <p>Once client-side timestamps are enabled for a table, this setting cannot be disabled.</p>
91    pub client_side_timestamps: ::std::option::Option<crate::types::ClientSideTimestamps>,
92    /// <p>The optional auto scaling settings for a table in provisioned capacity mode. Specifies if the service can manage throughput capacity automatically on your behalf.</p>
93    /// <p>Auto scaling helps you provision throughput capacity for variable workloads efficiently by increasing and decreasing your table's read and write capacity automatically in response to application traffic. For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/autoscaling.html">Managing throughput capacity automatically with Amazon Keyspaces auto scaling</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
94    /// <p>By default, auto scaling is disabled for a table.</p>
95    pub auto_scaling_specification: ::std::option::Option<crate::types::AutoScalingSpecification>,
96    /// <p>The optional Amazon Web Services Region specific settings of a multi-Region table. These settings overwrite the general settings of the table for the specified Region.</p>
97    /// <p>For a multi-Region table in provisioned capacity mode, you can configure the table's read capacity differently for each Region's replica. The write capacity, however, remains synchronized between all replicas to ensure that there's enough capacity to replicate writes across all Regions. To define the read capacity for a table replica in a specific Region, you can do so by configuring the following parameters.</p>
98    /// <ul>
99    /// <li>
100    /// <p><code>region</code>: The Region where these settings are applied. (Required)</p></li>
101    /// <li>
102    /// <p><code>readCapacityUnits</code>: The provisioned read capacity units. (Optional)</p></li>
103    /// <li>
104    /// <p><code>readCapacityAutoScaling</code>: The read capacity auto scaling settings for the table. (Optional)</p></li>
105    /// </ul>
106    pub replica_specifications: ::std::option::Option<::std::vec::Vec<crate::types::ReplicaSpecification>>,
107    /// <p>The CDC stream settings of the table.</p>
108    pub cdc_specification: ::std::option::Option<crate::types::CdcSpecification>,
109    /// <p>Specifies the warm throughput settings for the table. Pre-warming a table helps you avoid capacity exceeded exceptions by pre-provisioning read and write capacity units to reduce cold start latency when your table receives traffic.</p>
110    /// <p>For more information about pre-warming in Amazon Keyspaces, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/warm-throughput.html">Pre-warm a table in Amazon Keyspaces</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
111    pub warm_throughput_specification: ::std::option::Option<crate::types::WarmThroughputSpecification>,
112}
113impl CreateTableInput {
114    /// <p>The name of the keyspace that the table is going to be created in.</p>
115    pub fn keyspace_name(&self) -> ::std::option::Option<&str> {
116        self.keyspace_name.as_deref()
117    }
118    /// <p>The name of the table.</p>
119    pub fn table_name(&self) -> ::std::option::Option<&str> {
120        self.table_name.as_deref()
121    }
122    /// <p>The <code>schemaDefinition</code> consists of the following parameters.</p>
123    /// <p>For each column to be created:</p>
124    /// <ul>
125    /// <li>
126    /// <p><code>name</code> - The name of the column.</p></li>
127    /// <li>
128    /// <p><code>type</code> - An Amazon Keyspaces data type. For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/cql.elements.html#cql.data-types">Data types</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p></li>
129    /// </ul>
130    /// <p>The primary key of the table consists of the following columns:</p>
131    /// <ul>
132    /// <li>
133    /// <p><code>partitionKeys</code> - The partition key can be a single column, or it can be a compound value composed of two or more columns. The partition key portion of the primary key is required and determines how Amazon Keyspaces stores your data.</p></li>
134    /// <li>
135    /// <p><code>name</code> - The name of each partition key column.</p></li>
136    /// <li>
137    /// <p><code>clusteringKeys</code> - The optional clustering column portion of your primary key determines how the data is clustered and sorted within each partition.</p></li>
138    /// <li>
139    /// <p><code>name</code> - The name of the clustering column.</p></li>
140    /// <li>
141    /// <p><code>orderBy</code> - Sets the ascendant (<code>ASC</code>) or descendant (<code>DESC</code>) order modifier.</p>
142    /// <p>To define a column as static use <code>staticColumns</code> - Static columns store values that are shared by all rows in the same partition:</p></li>
143    /// <li>
144    /// <p><code>name</code> - The name of the column.</p></li>
145    /// <li>
146    /// <p><code>type</code> - An Amazon Keyspaces data type.</p></li>
147    /// </ul>
148    pub fn schema_definition(&self) -> ::std::option::Option<&crate::types::SchemaDefinition> {
149        self.schema_definition.as_ref()
150    }
151    /// <p>This parameter allows to enter a description of the table.</p>
152    pub fn comment(&self) -> ::std::option::Option<&crate::types::Comment> {
153        self.comment.as_ref()
154    }
155    /// <p>Specifies the read/write throughput capacity mode for the table. The options are:</p>
156    /// <ul>
157    /// <li>
158    /// <p><code>throughputMode:PAY_PER_REQUEST</code> and</p></li>
159    /// <li>
160    /// <p><code>throughputMode:PROVISIONED</code> - Provisioned capacity mode requires <code>readCapacityUnits</code> and <code>writeCapacityUnits</code> as input.</p></li>
161    /// </ul>
162    /// <p>The default is <code>throughput_mode:PAY_PER_REQUEST</code>.</p>
163    /// <p>For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/ReadWriteCapacityMode.html">Read/write capacity modes</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
164    pub fn capacity_specification(&self) -> ::std::option::Option<&crate::types::CapacitySpecification> {
165        self.capacity_specification.as_ref()
166    }
167    /// <p>Specifies how the encryption key for encryption at rest is managed for the table. You can choose one of the following KMS key (KMS key):</p>
168    /// <ul>
169    /// <li>
170    /// <p><code>type:AWS_OWNED_KMS_KEY</code> - This key is owned by Amazon Keyspaces.</p></li>
171    /// <li>
172    /// <p><code>type:CUSTOMER_MANAGED_KMS_KEY</code> - This key is stored in your account and is created, owned, and managed by you. This option requires the <code>kms_key_identifier</code> of the KMS key in Amazon Resource Name (ARN) format as input.</p></li>
173    /// </ul>
174    /// <p>The default is <code>type:AWS_OWNED_KMS_KEY</code>.</p>
175    /// <p>For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/EncryptionAtRest.html">Encryption at rest</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
176    pub fn encryption_specification(&self) -> ::std::option::Option<&crate::types::EncryptionSpecification> {
177        self.encryption_specification.as_ref()
178    }
179    /// <p>Specifies if <code>pointInTimeRecovery</code> is enabled or disabled for the table. The options are:</p>
180    /// <ul>
181    /// <li>
182    /// <p><code>status=ENABLED</code></p></li>
183    /// <li>
184    /// <p><code>status=DISABLED</code></p></li>
185    /// </ul>
186    /// <p>If it's not specified, the default is <code>status=DISABLED</code>.</p>
187    /// <p>For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/PointInTimeRecovery.html">Point-in-time recovery</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
188    pub fn point_in_time_recovery(&self) -> ::std::option::Option<&crate::types::PointInTimeRecovery> {
189        self.point_in_time_recovery.as_ref()
190    }
191    /// <p>Enables Time to Live custom settings for the table. The options are:</p>
192    /// <ul>
193    /// <li>
194    /// <p><code>status:enabled</code></p></li>
195    /// <li>
196    /// <p><code>status:disabled</code></p></li>
197    /// </ul>
198    /// <p>The default is <code>status:disabled</code>. After <code>ttl</code> is enabled, you can't disable it for the table.</p>
199    /// <p>For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/TTL.html">Expiring data by using Amazon Keyspaces Time to Live (TTL)</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
200    pub fn ttl(&self) -> ::std::option::Option<&crate::types::TimeToLive> {
201        self.ttl.as_ref()
202    }
203    /// <p>The default Time to Live setting in seconds for the table.</p>
204    /// <p>For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/TTL-how-it-works.html#ttl-howitworks_default_ttl">Setting the default TTL value for a table</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
205    pub fn default_time_to_live(&self) -> ::std::option::Option<i32> {
206        self.default_time_to_live
207    }
208    /// <p>A list of key-value pair tags to be attached to the resource.</p>
209    /// <p>For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/tagging-keyspaces.html">Adding tags and labels to Amazon Keyspaces resources</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
210    ///
211    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.tags.is_none()`.
212    pub fn tags(&self) -> &[crate::types::Tag] {
213        self.tags.as_deref().unwrap_or_default()
214    }
215    /// <p>Enables client-side timestamps for the table. By default, the setting is disabled. You can enable client-side timestamps with the following option:</p>
216    /// <ul>
217    /// <li>
218    /// <p><code>status: "enabled"</code></p></li>
219    /// </ul>
220    /// <p>Once client-side timestamps are enabled for a table, this setting cannot be disabled.</p>
221    pub fn client_side_timestamps(&self) -> ::std::option::Option<&crate::types::ClientSideTimestamps> {
222        self.client_side_timestamps.as_ref()
223    }
224    /// <p>The optional auto scaling settings for a table in provisioned capacity mode. Specifies if the service can manage throughput capacity automatically on your behalf.</p>
225    /// <p>Auto scaling helps you provision throughput capacity for variable workloads efficiently by increasing and decreasing your table's read and write capacity automatically in response to application traffic. For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/autoscaling.html">Managing throughput capacity automatically with Amazon Keyspaces auto scaling</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
226    /// <p>By default, auto scaling is disabled for a table.</p>
227    pub fn auto_scaling_specification(&self) -> ::std::option::Option<&crate::types::AutoScalingSpecification> {
228        self.auto_scaling_specification.as_ref()
229    }
230    /// <p>The optional Amazon Web Services Region specific settings of a multi-Region table. These settings overwrite the general settings of the table for the specified Region.</p>
231    /// <p>For a multi-Region table in provisioned capacity mode, you can configure the table's read capacity differently for each Region's replica. The write capacity, however, remains synchronized between all replicas to ensure that there's enough capacity to replicate writes across all Regions. To define the read capacity for a table replica in a specific Region, you can do so by configuring the following parameters.</p>
232    /// <ul>
233    /// <li>
234    /// <p><code>region</code>: The Region where these settings are applied. (Required)</p></li>
235    /// <li>
236    /// <p><code>readCapacityUnits</code>: The provisioned read capacity units. (Optional)</p></li>
237    /// <li>
238    /// <p><code>readCapacityAutoScaling</code>: The read capacity auto scaling settings for the table. (Optional)</p></li>
239    /// </ul>
240    ///
241    /// If no value was sent for this field, a default will be set. If you want to determine if no value was sent, use `.replica_specifications.is_none()`.
242    pub fn replica_specifications(&self) -> &[crate::types::ReplicaSpecification] {
243        self.replica_specifications.as_deref().unwrap_or_default()
244    }
245    /// <p>The CDC stream settings of the table.</p>
246    pub fn cdc_specification(&self) -> ::std::option::Option<&crate::types::CdcSpecification> {
247        self.cdc_specification.as_ref()
248    }
249    /// <p>Specifies the warm throughput settings for the table. Pre-warming a table helps you avoid capacity exceeded exceptions by pre-provisioning read and write capacity units to reduce cold start latency when your table receives traffic.</p>
250    /// <p>For more information about pre-warming in Amazon Keyspaces, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/warm-throughput.html">Pre-warm a table in Amazon Keyspaces</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
251    pub fn warm_throughput_specification(&self) -> ::std::option::Option<&crate::types::WarmThroughputSpecification> {
252        self.warm_throughput_specification.as_ref()
253    }
254}
255impl CreateTableInput {
256    /// Creates a new builder-style object to manufacture [`CreateTableInput`](crate::operation::create_table::CreateTableInput).
257    pub fn builder() -> crate::operation::create_table::builders::CreateTableInputBuilder {
258        crate::operation::create_table::builders::CreateTableInputBuilder::default()
259    }
260}
261
262/// A builder for [`CreateTableInput`](crate::operation::create_table::CreateTableInput).
263#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
264#[non_exhaustive]
265pub struct CreateTableInputBuilder {
266    pub(crate) keyspace_name: ::std::option::Option<::std::string::String>,
267    pub(crate) table_name: ::std::option::Option<::std::string::String>,
268    pub(crate) schema_definition: ::std::option::Option<crate::types::SchemaDefinition>,
269    pub(crate) comment: ::std::option::Option<crate::types::Comment>,
270    pub(crate) capacity_specification: ::std::option::Option<crate::types::CapacitySpecification>,
271    pub(crate) encryption_specification: ::std::option::Option<crate::types::EncryptionSpecification>,
272    pub(crate) point_in_time_recovery: ::std::option::Option<crate::types::PointInTimeRecovery>,
273    pub(crate) ttl: ::std::option::Option<crate::types::TimeToLive>,
274    pub(crate) default_time_to_live: ::std::option::Option<i32>,
275    pub(crate) tags: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>,
276    pub(crate) client_side_timestamps: ::std::option::Option<crate::types::ClientSideTimestamps>,
277    pub(crate) auto_scaling_specification: ::std::option::Option<crate::types::AutoScalingSpecification>,
278    pub(crate) replica_specifications: ::std::option::Option<::std::vec::Vec<crate::types::ReplicaSpecification>>,
279    pub(crate) cdc_specification: ::std::option::Option<crate::types::CdcSpecification>,
280    pub(crate) warm_throughput_specification: ::std::option::Option<crate::types::WarmThroughputSpecification>,
281}
282impl CreateTableInputBuilder {
283    /// <p>The name of the keyspace that the table is going to be created in.</p>
284    /// This field is required.
285    pub fn keyspace_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
286        self.keyspace_name = ::std::option::Option::Some(input.into());
287        self
288    }
289    /// <p>The name of the keyspace that the table is going to be created in.</p>
290    pub fn set_keyspace_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
291        self.keyspace_name = input;
292        self
293    }
294    /// <p>The name of the keyspace that the table is going to be created in.</p>
295    pub fn get_keyspace_name(&self) -> &::std::option::Option<::std::string::String> {
296        &self.keyspace_name
297    }
298    /// <p>The name of the table.</p>
299    /// This field is required.
300    pub fn table_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
301        self.table_name = ::std::option::Option::Some(input.into());
302        self
303    }
304    /// <p>The name of the table.</p>
305    pub fn set_table_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
306        self.table_name = input;
307        self
308    }
309    /// <p>The name of the table.</p>
310    pub fn get_table_name(&self) -> &::std::option::Option<::std::string::String> {
311        &self.table_name
312    }
313    /// <p>The <code>schemaDefinition</code> consists of the following parameters.</p>
314    /// <p>For each column to be created:</p>
315    /// <ul>
316    /// <li>
317    /// <p><code>name</code> - The name of the column.</p></li>
318    /// <li>
319    /// <p><code>type</code> - An Amazon Keyspaces data type. For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/cql.elements.html#cql.data-types">Data types</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p></li>
320    /// </ul>
321    /// <p>The primary key of the table consists of the following columns:</p>
322    /// <ul>
323    /// <li>
324    /// <p><code>partitionKeys</code> - The partition key can be a single column, or it can be a compound value composed of two or more columns. The partition key portion of the primary key is required and determines how Amazon Keyspaces stores your data.</p></li>
325    /// <li>
326    /// <p><code>name</code> - The name of each partition key column.</p></li>
327    /// <li>
328    /// <p><code>clusteringKeys</code> - The optional clustering column portion of your primary key determines how the data is clustered and sorted within each partition.</p></li>
329    /// <li>
330    /// <p><code>name</code> - The name of the clustering column.</p></li>
331    /// <li>
332    /// <p><code>orderBy</code> - Sets the ascendant (<code>ASC</code>) or descendant (<code>DESC</code>) order modifier.</p>
333    /// <p>To define a column as static use <code>staticColumns</code> - Static columns store values that are shared by all rows in the same partition:</p></li>
334    /// <li>
335    /// <p><code>name</code> - The name of the column.</p></li>
336    /// <li>
337    /// <p><code>type</code> - An Amazon Keyspaces data type.</p></li>
338    /// </ul>
339    /// This field is required.
340    pub fn schema_definition(mut self, input: crate::types::SchemaDefinition) -> Self {
341        self.schema_definition = ::std::option::Option::Some(input);
342        self
343    }
344    /// <p>The <code>schemaDefinition</code> consists of the following parameters.</p>
345    /// <p>For each column to be created:</p>
346    /// <ul>
347    /// <li>
348    /// <p><code>name</code> - The name of the column.</p></li>
349    /// <li>
350    /// <p><code>type</code> - An Amazon Keyspaces data type. For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/cql.elements.html#cql.data-types">Data types</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p></li>
351    /// </ul>
352    /// <p>The primary key of the table consists of the following columns:</p>
353    /// <ul>
354    /// <li>
355    /// <p><code>partitionKeys</code> - The partition key can be a single column, or it can be a compound value composed of two or more columns. The partition key portion of the primary key is required and determines how Amazon Keyspaces stores your data.</p></li>
356    /// <li>
357    /// <p><code>name</code> - The name of each partition key column.</p></li>
358    /// <li>
359    /// <p><code>clusteringKeys</code> - The optional clustering column portion of your primary key determines how the data is clustered and sorted within each partition.</p></li>
360    /// <li>
361    /// <p><code>name</code> - The name of the clustering column.</p></li>
362    /// <li>
363    /// <p><code>orderBy</code> - Sets the ascendant (<code>ASC</code>) or descendant (<code>DESC</code>) order modifier.</p>
364    /// <p>To define a column as static use <code>staticColumns</code> - Static columns store values that are shared by all rows in the same partition:</p></li>
365    /// <li>
366    /// <p><code>name</code> - The name of the column.</p></li>
367    /// <li>
368    /// <p><code>type</code> - An Amazon Keyspaces data type.</p></li>
369    /// </ul>
370    pub fn set_schema_definition(mut self, input: ::std::option::Option<crate::types::SchemaDefinition>) -> Self {
371        self.schema_definition = input;
372        self
373    }
374    /// <p>The <code>schemaDefinition</code> consists of the following parameters.</p>
375    /// <p>For each column to be created:</p>
376    /// <ul>
377    /// <li>
378    /// <p><code>name</code> - The name of the column.</p></li>
379    /// <li>
380    /// <p><code>type</code> - An Amazon Keyspaces data type. For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/cql.elements.html#cql.data-types">Data types</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p></li>
381    /// </ul>
382    /// <p>The primary key of the table consists of the following columns:</p>
383    /// <ul>
384    /// <li>
385    /// <p><code>partitionKeys</code> - The partition key can be a single column, or it can be a compound value composed of two or more columns. The partition key portion of the primary key is required and determines how Amazon Keyspaces stores your data.</p></li>
386    /// <li>
387    /// <p><code>name</code> - The name of each partition key column.</p></li>
388    /// <li>
389    /// <p><code>clusteringKeys</code> - The optional clustering column portion of your primary key determines how the data is clustered and sorted within each partition.</p></li>
390    /// <li>
391    /// <p><code>name</code> - The name of the clustering column.</p></li>
392    /// <li>
393    /// <p><code>orderBy</code> - Sets the ascendant (<code>ASC</code>) or descendant (<code>DESC</code>) order modifier.</p>
394    /// <p>To define a column as static use <code>staticColumns</code> - Static columns store values that are shared by all rows in the same partition:</p></li>
395    /// <li>
396    /// <p><code>name</code> - The name of the column.</p></li>
397    /// <li>
398    /// <p><code>type</code> - An Amazon Keyspaces data type.</p></li>
399    /// </ul>
400    pub fn get_schema_definition(&self) -> &::std::option::Option<crate::types::SchemaDefinition> {
401        &self.schema_definition
402    }
403    /// <p>This parameter allows to enter a description of the table.</p>
404    pub fn comment(mut self, input: crate::types::Comment) -> Self {
405        self.comment = ::std::option::Option::Some(input);
406        self
407    }
408    /// <p>This parameter allows to enter a description of the table.</p>
409    pub fn set_comment(mut self, input: ::std::option::Option<crate::types::Comment>) -> Self {
410        self.comment = input;
411        self
412    }
413    /// <p>This parameter allows to enter a description of the table.</p>
414    pub fn get_comment(&self) -> &::std::option::Option<crate::types::Comment> {
415        &self.comment
416    }
417    /// <p>Specifies the read/write throughput capacity mode for the table. The options are:</p>
418    /// <ul>
419    /// <li>
420    /// <p><code>throughputMode:PAY_PER_REQUEST</code> and</p></li>
421    /// <li>
422    /// <p><code>throughputMode:PROVISIONED</code> - Provisioned capacity mode requires <code>readCapacityUnits</code> and <code>writeCapacityUnits</code> as input.</p></li>
423    /// </ul>
424    /// <p>The default is <code>throughput_mode:PAY_PER_REQUEST</code>.</p>
425    /// <p>For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/ReadWriteCapacityMode.html">Read/write capacity modes</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
426    pub fn capacity_specification(mut self, input: crate::types::CapacitySpecification) -> Self {
427        self.capacity_specification = ::std::option::Option::Some(input);
428        self
429    }
430    /// <p>Specifies the read/write throughput capacity mode for the table. The options are:</p>
431    /// <ul>
432    /// <li>
433    /// <p><code>throughputMode:PAY_PER_REQUEST</code> and</p></li>
434    /// <li>
435    /// <p><code>throughputMode:PROVISIONED</code> - Provisioned capacity mode requires <code>readCapacityUnits</code> and <code>writeCapacityUnits</code> as input.</p></li>
436    /// </ul>
437    /// <p>The default is <code>throughput_mode:PAY_PER_REQUEST</code>.</p>
438    /// <p>For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/ReadWriteCapacityMode.html">Read/write capacity modes</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
439    pub fn set_capacity_specification(mut self, input: ::std::option::Option<crate::types::CapacitySpecification>) -> Self {
440        self.capacity_specification = input;
441        self
442    }
443    /// <p>Specifies the read/write throughput capacity mode for the table. The options are:</p>
444    /// <ul>
445    /// <li>
446    /// <p><code>throughputMode:PAY_PER_REQUEST</code> and</p></li>
447    /// <li>
448    /// <p><code>throughputMode:PROVISIONED</code> - Provisioned capacity mode requires <code>readCapacityUnits</code> and <code>writeCapacityUnits</code> as input.</p></li>
449    /// </ul>
450    /// <p>The default is <code>throughput_mode:PAY_PER_REQUEST</code>.</p>
451    /// <p>For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/ReadWriteCapacityMode.html">Read/write capacity modes</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
452    pub fn get_capacity_specification(&self) -> &::std::option::Option<crate::types::CapacitySpecification> {
453        &self.capacity_specification
454    }
455    /// <p>Specifies how the encryption key for encryption at rest is managed for the table. You can choose one of the following KMS key (KMS key):</p>
456    /// <ul>
457    /// <li>
458    /// <p><code>type:AWS_OWNED_KMS_KEY</code> - This key is owned by Amazon Keyspaces.</p></li>
459    /// <li>
460    /// <p><code>type:CUSTOMER_MANAGED_KMS_KEY</code> - This key is stored in your account and is created, owned, and managed by you. This option requires the <code>kms_key_identifier</code> of the KMS key in Amazon Resource Name (ARN) format as input.</p></li>
461    /// </ul>
462    /// <p>The default is <code>type:AWS_OWNED_KMS_KEY</code>.</p>
463    /// <p>For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/EncryptionAtRest.html">Encryption at rest</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
464    pub fn encryption_specification(mut self, input: crate::types::EncryptionSpecification) -> Self {
465        self.encryption_specification = ::std::option::Option::Some(input);
466        self
467    }
468    /// <p>Specifies how the encryption key for encryption at rest is managed for the table. You can choose one of the following KMS key (KMS key):</p>
469    /// <ul>
470    /// <li>
471    /// <p><code>type:AWS_OWNED_KMS_KEY</code> - This key is owned by Amazon Keyspaces.</p></li>
472    /// <li>
473    /// <p><code>type:CUSTOMER_MANAGED_KMS_KEY</code> - This key is stored in your account and is created, owned, and managed by you. This option requires the <code>kms_key_identifier</code> of the KMS key in Amazon Resource Name (ARN) format as input.</p></li>
474    /// </ul>
475    /// <p>The default is <code>type:AWS_OWNED_KMS_KEY</code>.</p>
476    /// <p>For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/EncryptionAtRest.html">Encryption at rest</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
477    pub fn set_encryption_specification(mut self, input: ::std::option::Option<crate::types::EncryptionSpecification>) -> Self {
478        self.encryption_specification = input;
479        self
480    }
481    /// <p>Specifies how the encryption key for encryption at rest is managed for the table. You can choose one of the following KMS key (KMS key):</p>
482    /// <ul>
483    /// <li>
484    /// <p><code>type:AWS_OWNED_KMS_KEY</code> - This key is owned by Amazon Keyspaces.</p></li>
485    /// <li>
486    /// <p><code>type:CUSTOMER_MANAGED_KMS_KEY</code> - This key is stored in your account and is created, owned, and managed by you. This option requires the <code>kms_key_identifier</code> of the KMS key in Amazon Resource Name (ARN) format as input.</p></li>
487    /// </ul>
488    /// <p>The default is <code>type:AWS_OWNED_KMS_KEY</code>.</p>
489    /// <p>For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/EncryptionAtRest.html">Encryption at rest</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
490    pub fn get_encryption_specification(&self) -> &::std::option::Option<crate::types::EncryptionSpecification> {
491        &self.encryption_specification
492    }
493    /// <p>Specifies if <code>pointInTimeRecovery</code> is enabled or disabled for the table. The options are:</p>
494    /// <ul>
495    /// <li>
496    /// <p><code>status=ENABLED</code></p></li>
497    /// <li>
498    /// <p><code>status=DISABLED</code></p></li>
499    /// </ul>
500    /// <p>If it's not specified, the default is <code>status=DISABLED</code>.</p>
501    /// <p>For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/PointInTimeRecovery.html">Point-in-time recovery</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
502    pub fn point_in_time_recovery(mut self, input: crate::types::PointInTimeRecovery) -> Self {
503        self.point_in_time_recovery = ::std::option::Option::Some(input);
504        self
505    }
506    /// <p>Specifies if <code>pointInTimeRecovery</code> is enabled or disabled for the table. The options are:</p>
507    /// <ul>
508    /// <li>
509    /// <p><code>status=ENABLED</code></p></li>
510    /// <li>
511    /// <p><code>status=DISABLED</code></p></li>
512    /// </ul>
513    /// <p>If it's not specified, the default is <code>status=DISABLED</code>.</p>
514    /// <p>For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/PointInTimeRecovery.html">Point-in-time recovery</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
515    pub fn set_point_in_time_recovery(mut self, input: ::std::option::Option<crate::types::PointInTimeRecovery>) -> Self {
516        self.point_in_time_recovery = input;
517        self
518    }
519    /// <p>Specifies if <code>pointInTimeRecovery</code> is enabled or disabled for the table. The options are:</p>
520    /// <ul>
521    /// <li>
522    /// <p><code>status=ENABLED</code></p></li>
523    /// <li>
524    /// <p><code>status=DISABLED</code></p></li>
525    /// </ul>
526    /// <p>If it's not specified, the default is <code>status=DISABLED</code>.</p>
527    /// <p>For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/PointInTimeRecovery.html">Point-in-time recovery</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
528    pub fn get_point_in_time_recovery(&self) -> &::std::option::Option<crate::types::PointInTimeRecovery> {
529        &self.point_in_time_recovery
530    }
531    /// <p>Enables Time to Live custom settings for the table. The options are:</p>
532    /// <ul>
533    /// <li>
534    /// <p><code>status:enabled</code></p></li>
535    /// <li>
536    /// <p><code>status:disabled</code></p></li>
537    /// </ul>
538    /// <p>The default is <code>status:disabled</code>. After <code>ttl</code> is enabled, you can't disable it for the table.</p>
539    /// <p>For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/TTL.html">Expiring data by using Amazon Keyspaces Time to Live (TTL)</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
540    pub fn ttl(mut self, input: crate::types::TimeToLive) -> Self {
541        self.ttl = ::std::option::Option::Some(input);
542        self
543    }
544    /// <p>Enables Time to Live custom settings for the table. The options are:</p>
545    /// <ul>
546    /// <li>
547    /// <p><code>status:enabled</code></p></li>
548    /// <li>
549    /// <p><code>status:disabled</code></p></li>
550    /// </ul>
551    /// <p>The default is <code>status:disabled</code>. After <code>ttl</code> is enabled, you can't disable it for the table.</p>
552    /// <p>For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/TTL.html">Expiring data by using Amazon Keyspaces Time to Live (TTL)</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
553    pub fn set_ttl(mut self, input: ::std::option::Option<crate::types::TimeToLive>) -> Self {
554        self.ttl = input;
555        self
556    }
557    /// <p>Enables Time to Live custom settings for the table. The options are:</p>
558    /// <ul>
559    /// <li>
560    /// <p><code>status:enabled</code></p></li>
561    /// <li>
562    /// <p><code>status:disabled</code></p></li>
563    /// </ul>
564    /// <p>The default is <code>status:disabled</code>. After <code>ttl</code> is enabled, you can't disable it for the table.</p>
565    /// <p>For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/TTL.html">Expiring data by using Amazon Keyspaces Time to Live (TTL)</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
566    pub fn get_ttl(&self) -> &::std::option::Option<crate::types::TimeToLive> {
567        &self.ttl
568    }
569    /// <p>The default Time to Live setting in seconds for the table.</p>
570    /// <p>For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/TTL-how-it-works.html#ttl-howitworks_default_ttl">Setting the default TTL value for a table</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
571    pub fn default_time_to_live(mut self, input: i32) -> Self {
572        self.default_time_to_live = ::std::option::Option::Some(input);
573        self
574    }
575    /// <p>The default Time to Live setting in seconds for the table.</p>
576    /// <p>For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/TTL-how-it-works.html#ttl-howitworks_default_ttl">Setting the default TTL value for a table</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
577    pub fn set_default_time_to_live(mut self, input: ::std::option::Option<i32>) -> Self {
578        self.default_time_to_live = input;
579        self
580    }
581    /// <p>The default Time to Live setting in seconds for the table.</p>
582    /// <p>For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/TTL-how-it-works.html#ttl-howitworks_default_ttl">Setting the default TTL value for a table</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
583    pub fn get_default_time_to_live(&self) -> &::std::option::Option<i32> {
584        &self.default_time_to_live
585    }
586    /// Appends an item to `tags`.
587    ///
588    /// To override the contents of this collection use [`set_tags`](Self::set_tags).
589    ///
590    /// <p>A list of key-value pair tags to be attached to the resource.</p>
591    /// <p>For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/tagging-keyspaces.html">Adding tags and labels to Amazon Keyspaces resources</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
592    pub fn tags(mut self, input: crate::types::Tag) -> Self {
593        let mut v = self.tags.unwrap_or_default();
594        v.push(input);
595        self.tags = ::std::option::Option::Some(v);
596        self
597    }
598    /// <p>A list of key-value pair tags to be attached to the resource.</p>
599    /// <p>For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/tagging-keyspaces.html">Adding tags and labels to Amazon Keyspaces resources</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
600    pub fn set_tags(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>) -> Self {
601        self.tags = input;
602        self
603    }
604    /// <p>A list of key-value pair tags to be attached to the resource.</p>
605    /// <p>For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/tagging-keyspaces.html">Adding tags and labels to Amazon Keyspaces resources</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
606    pub fn get_tags(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Tag>> {
607        &self.tags
608    }
609    /// <p>Enables client-side timestamps for the table. By default, the setting is disabled. You can enable client-side timestamps with the following option:</p>
610    /// <ul>
611    /// <li>
612    /// <p><code>status: "enabled"</code></p></li>
613    /// </ul>
614    /// <p>Once client-side timestamps are enabled for a table, this setting cannot be disabled.</p>
615    pub fn client_side_timestamps(mut self, input: crate::types::ClientSideTimestamps) -> Self {
616        self.client_side_timestamps = ::std::option::Option::Some(input);
617        self
618    }
619    /// <p>Enables client-side timestamps for the table. By default, the setting is disabled. You can enable client-side timestamps with the following option:</p>
620    /// <ul>
621    /// <li>
622    /// <p><code>status: "enabled"</code></p></li>
623    /// </ul>
624    /// <p>Once client-side timestamps are enabled for a table, this setting cannot be disabled.</p>
625    pub fn set_client_side_timestamps(mut self, input: ::std::option::Option<crate::types::ClientSideTimestamps>) -> Self {
626        self.client_side_timestamps = input;
627        self
628    }
629    /// <p>Enables client-side timestamps for the table. By default, the setting is disabled. You can enable client-side timestamps with the following option:</p>
630    /// <ul>
631    /// <li>
632    /// <p><code>status: "enabled"</code></p></li>
633    /// </ul>
634    /// <p>Once client-side timestamps are enabled for a table, this setting cannot be disabled.</p>
635    pub fn get_client_side_timestamps(&self) -> &::std::option::Option<crate::types::ClientSideTimestamps> {
636        &self.client_side_timestamps
637    }
638    /// <p>The optional auto scaling settings for a table in provisioned capacity mode. Specifies if the service can manage throughput capacity automatically on your behalf.</p>
639    /// <p>Auto scaling helps you provision throughput capacity for variable workloads efficiently by increasing and decreasing your table's read and write capacity automatically in response to application traffic. For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/autoscaling.html">Managing throughput capacity automatically with Amazon Keyspaces auto scaling</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
640    /// <p>By default, auto scaling is disabled for a table.</p>
641    pub fn auto_scaling_specification(mut self, input: crate::types::AutoScalingSpecification) -> Self {
642        self.auto_scaling_specification = ::std::option::Option::Some(input);
643        self
644    }
645    /// <p>The optional auto scaling settings for a table in provisioned capacity mode. Specifies if the service can manage throughput capacity automatically on your behalf.</p>
646    /// <p>Auto scaling helps you provision throughput capacity for variable workloads efficiently by increasing and decreasing your table's read and write capacity automatically in response to application traffic. For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/autoscaling.html">Managing throughput capacity automatically with Amazon Keyspaces auto scaling</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
647    /// <p>By default, auto scaling is disabled for a table.</p>
648    pub fn set_auto_scaling_specification(mut self, input: ::std::option::Option<crate::types::AutoScalingSpecification>) -> Self {
649        self.auto_scaling_specification = input;
650        self
651    }
652    /// <p>The optional auto scaling settings for a table in provisioned capacity mode. Specifies if the service can manage throughput capacity automatically on your behalf.</p>
653    /// <p>Auto scaling helps you provision throughput capacity for variable workloads efficiently by increasing and decreasing your table's read and write capacity automatically in response to application traffic. For more information, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/autoscaling.html">Managing throughput capacity automatically with Amazon Keyspaces auto scaling</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
654    /// <p>By default, auto scaling is disabled for a table.</p>
655    pub fn get_auto_scaling_specification(&self) -> &::std::option::Option<crate::types::AutoScalingSpecification> {
656        &self.auto_scaling_specification
657    }
658    /// Appends an item to `replica_specifications`.
659    ///
660    /// To override the contents of this collection use [`set_replica_specifications`](Self::set_replica_specifications).
661    ///
662    /// <p>The optional Amazon Web Services Region specific settings of a multi-Region table. These settings overwrite the general settings of the table for the specified Region.</p>
663    /// <p>For a multi-Region table in provisioned capacity mode, you can configure the table's read capacity differently for each Region's replica. The write capacity, however, remains synchronized between all replicas to ensure that there's enough capacity to replicate writes across all Regions. To define the read capacity for a table replica in a specific Region, you can do so by configuring the following parameters.</p>
664    /// <ul>
665    /// <li>
666    /// <p><code>region</code>: The Region where these settings are applied. (Required)</p></li>
667    /// <li>
668    /// <p><code>readCapacityUnits</code>: The provisioned read capacity units. (Optional)</p></li>
669    /// <li>
670    /// <p><code>readCapacityAutoScaling</code>: The read capacity auto scaling settings for the table. (Optional)</p></li>
671    /// </ul>
672    pub fn replica_specifications(mut self, input: crate::types::ReplicaSpecification) -> Self {
673        let mut v = self.replica_specifications.unwrap_or_default();
674        v.push(input);
675        self.replica_specifications = ::std::option::Option::Some(v);
676        self
677    }
678    /// <p>The optional Amazon Web Services Region specific settings of a multi-Region table. These settings overwrite the general settings of the table for the specified Region.</p>
679    /// <p>For a multi-Region table in provisioned capacity mode, you can configure the table's read capacity differently for each Region's replica. The write capacity, however, remains synchronized between all replicas to ensure that there's enough capacity to replicate writes across all Regions. To define the read capacity for a table replica in a specific Region, you can do so by configuring the following parameters.</p>
680    /// <ul>
681    /// <li>
682    /// <p><code>region</code>: The Region where these settings are applied. (Required)</p></li>
683    /// <li>
684    /// <p><code>readCapacityUnits</code>: The provisioned read capacity units. (Optional)</p></li>
685    /// <li>
686    /// <p><code>readCapacityAutoScaling</code>: The read capacity auto scaling settings for the table. (Optional)</p></li>
687    /// </ul>
688    pub fn set_replica_specifications(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::ReplicaSpecification>>) -> Self {
689        self.replica_specifications = input;
690        self
691    }
692    /// <p>The optional Amazon Web Services Region specific settings of a multi-Region table. These settings overwrite the general settings of the table for the specified Region.</p>
693    /// <p>For a multi-Region table in provisioned capacity mode, you can configure the table's read capacity differently for each Region's replica. The write capacity, however, remains synchronized between all replicas to ensure that there's enough capacity to replicate writes across all Regions. To define the read capacity for a table replica in a specific Region, you can do so by configuring the following parameters.</p>
694    /// <ul>
695    /// <li>
696    /// <p><code>region</code>: The Region where these settings are applied. (Required)</p></li>
697    /// <li>
698    /// <p><code>readCapacityUnits</code>: The provisioned read capacity units. (Optional)</p></li>
699    /// <li>
700    /// <p><code>readCapacityAutoScaling</code>: The read capacity auto scaling settings for the table. (Optional)</p></li>
701    /// </ul>
702    pub fn get_replica_specifications(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::ReplicaSpecification>> {
703        &self.replica_specifications
704    }
705    /// <p>The CDC stream settings of the table.</p>
706    pub fn cdc_specification(mut self, input: crate::types::CdcSpecification) -> Self {
707        self.cdc_specification = ::std::option::Option::Some(input);
708        self
709    }
710    /// <p>The CDC stream settings of the table.</p>
711    pub fn set_cdc_specification(mut self, input: ::std::option::Option<crate::types::CdcSpecification>) -> Self {
712        self.cdc_specification = input;
713        self
714    }
715    /// <p>The CDC stream settings of the table.</p>
716    pub fn get_cdc_specification(&self) -> &::std::option::Option<crate::types::CdcSpecification> {
717        &self.cdc_specification
718    }
719    /// <p>Specifies the warm throughput settings for the table. Pre-warming a table helps you avoid capacity exceeded exceptions by pre-provisioning read and write capacity units to reduce cold start latency when your table receives traffic.</p>
720    /// <p>For more information about pre-warming in Amazon Keyspaces, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/warm-throughput.html">Pre-warm a table in Amazon Keyspaces</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
721    pub fn warm_throughput_specification(mut self, input: crate::types::WarmThroughputSpecification) -> Self {
722        self.warm_throughput_specification = ::std::option::Option::Some(input);
723        self
724    }
725    /// <p>Specifies the warm throughput settings for the table. Pre-warming a table helps you avoid capacity exceeded exceptions by pre-provisioning read and write capacity units to reduce cold start latency when your table receives traffic.</p>
726    /// <p>For more information about pre-warming in Amazon Keyspaces, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/warm-throughput.html">Pre-warm a table in Amazon Keyspaces</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
727    pub fn set_warm_throughput_specification(mut self, input: ::std::option::Option<crate::types::WarmThroughputSpecification>) -> Self {
728        self.warm_throughput_specification = input;
729        self
730    }
731    /// <p>Specifies the warm throughput settings for the table. Pre-warming a table helps you avoid capacity exceeded exceptions by pre-provisioning read and write capacity units to reduce cold start latency when your table receives traffic.</p>
732    /// <p>For more information about pre-warming in Amazon Keyspaces, see <a href="https://docs.aws.amazon.com/keyspaces/latest/devguide/warm-throughput.html">Pre-warm a table in Amazon Keyspaces</a> in the <i>Amazon Keyspaces Developer Guide</i>.</p>
733    pub fn get_warm_throughput_specification(&self) -> &::std::option::Option<crate::types::WarmThroughputSpecification> {
734        &self.warm_throughput_specification
735    }
736    /// Consumes the builder and constructs a [`CreateTableInput`](crate::operation::create_table::CreateTableInput).
737    pub fn build(self) -> ::std::result::Result<crate::operation::create_table::CreateTableInput, ::aws_smithy_types::error::operation::BuildError> {
738        ::std::result::Result::Ok(crate::operation::create_table::CreateTableInput {
739            keyspace_name: self.keyspace_name,
740            table_name: self.table_name,
741            schema_definition: self.schema_definition,
742            comment: self.comment,
743            capacity_specification: self.capacity_specification,
744            encryption_specification: self.encryption_specification,
745            point_in_time_recovery: self.point_in_time_recovery,
746            ttl: self.ttl,
747            default_time_to_live: self.default_time_to_live,
748            tags: self.tags,
749            client_side_timestamps: self.client_side_timestamps,
750            auto_scaling_specification: self.auto_scaling_specification,
751            replica_specifications: self.replica_specifications,
752            cdc_specification: self.cdc_specification,
753            warm_throughput_specification: self.warm_throughput_specification,
754        })
755    }
756}