// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
impl super::Client {
/// Constructs a fluent builder for the [`CreateTable`](crate::operation::create_table::builders::CreateTableFluentBuilder) operation.
///
/// - The fluent builder is configurable:
/// - [`keyspace_name(impl Into<String>)`](crate::operation::create_table::builders::CreateTableFluentBuilder::keyspace_name) / [`set_keyspace_name(Option<String>)`](crate::operation::create_table::builders::CreateTableFluentBuilder::set_keyspace_name):<br>required: **true**<br><p>The name of the keyspace that the table is going to be created in.</p><br>
/// - [`table_name(impl Into<String>)`](crate::operation::create_table::builders::CreateTableFluentBuilder::table_name) / [`set_table_name(Option<String>)`](crate::operation::create_table::builders::CreateTableFluentBuilder::set_table_name):<br>required: **true**<br><p>The name of the table.</p><br>
/// - [`schema_definition(SchemaDefinition)`](crate::operation::create_table::builders::CreateTableFluentBuilder::schema_definition) / [`set_schema_definition(Option<SchemaDefinition>)`](crate::operation::create_table::builders::CreateTableFluentBuilder::set_schema_definition):<br>required: **true**<br><p>The <code>schemaDefinition</code> consists of the following parameters.</p> <p>For each column to be created:</p> <ul> <li> <p> <code>name</code> - The name of the column.</p> </li> <li> <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> </ul> <p>The primary key of the table consists of the following columns:</p> <ul> <li> <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> <li> <p> <code>name</code> - The name of each partition key column.</p> </li> <li> <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> <li> <p> <code>name</code> - The name of the clustering column. </p> </li> <li> <p> <code>orderBy</code> - Sets the ascendant (<code>ASC</code>) or descendant (<code>DESC</code>) order modifier.</p> <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> <li> <p> <code>name</code> - The name of the column.</p> </li> <li> <p> <code>type</code> - An Amazon Keyspaces data type.</p> </li> </ul><br>
/// - [`comment(Comment)`](crate::operation::create_table::builders::CreateTableFluentBuilder::comment) / [`set_comment(Option<Comment>)`](crate::operation::create_table::builders::CreateTableFluentBuilder::set_comment):<br>required: **false**<br><p>This parameter allows to enter a description of the table.</p><br>
/// - [`capacity_specification(CapacitySpecification)`](crate::operation::create_table::builders::CreateTableFluentBuilder::capacity_specification) / [`set_capacity_specification(Option<CapacitySpecification>)`](crate::operation::create_table::builders::CreateTableFluentBuilder::set_capacity_specification):<br>required: **false**<br><p>Specifies the read/write throughput capacity mode for the table. The options are:</p> <ul> <li> <p> <code>throughputMode:PAY_PER_REQUEST</code> and </p> </li> <li> <p> <code>throughputMode:PROVISIONED</code> - Provisioned capacity mode requires <code>readCapacityUnits</code> and <code>writeCapacityUnits</code> as input.</p> </li> </ul> <p>The default is <code>throughput_mode:PAY_PER_REQUEST</code>.</p> <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><br>
/// - [`encryption_specification(EncryptionSpecification)`](crate::operation::create_table::builders::CreateTableFluentBuilder::encryption_specification) / [`set_encryption_specification(Option<EncryptionSpecification>)`](crate::operation::create_table::builders::CreateTableFluentBuilder::set_encryption_specification):<br>required: **false**<br><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> <ul> <li> <p> <code>type:AWS_OWNED_KMS_KEY</code> - This key is owned by Amazon Keyspaces. </p> </li> <li> <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> </ul> <p>The default is <code>type:AWS_OWNED_KMS_KEY</code>.</p> <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><br>
/// - [`point_in_time_recovery(PointInTimeRecovery)`](crate::operation::create_table::builders::CreateTableFluentBuilder::point_in_time_recovery) / [`set_point_in_time_recovery(Option<PointInTimeRecovery>)`](crate::operation::create_table::builders::CreateTableFluentBuilder::set_point_in_time_recovery):<br>required: **false**<br><p>Specifies if <code>pointInTimeRecovery</code> is enabled or disabled for the table. The options are:</p> <ul> <li> <p> <code>status=ENABLED</code> </p> </li> <li> <p> <code>status=DISABLED</code> </p> </li> </ul> <p>If it's not specified, the default is <code>status=DISABLED</code>.</p> <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><br>
/// - [`ttl(TimeToLive)`](crate::operation::create_table::builders::CreateTableFluentBuilder::ttl) / [`set_ttl(Option<TimeToLive>)`](crate::operation::create_table::builders::CreateTableFluentBuilder::set_ttl):<br>required: **false**<br><p>Enables Time to Live custom settings for the table. The options are:</p> <ul> <li> <p> <code>status:enabled</code> </p> </li> <li> <p> <code>status:disabled</code> </p> </li> </ul> <p>The default is <code>status:disabled</code>. After <code>ttl</code> is enabled, you can't disable it for the table.</p> <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><br>
/// - [`default_time_to_live(i32)`](crate::operation::create_table::builders::CreateTableFluentBuilder::default_time_to_live) / [`set_default_time_to_live(Option<i32>)`](crate::operation::create_table::builders::CreateTableFluentBuilder::set_default_time_to_live):<br>required: **false**<br><p>The default Time to Live setting in seconds for the table.</p> <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><br>
/// - [`tags(Tag)`](crate::operation::create_table::builders::CreateTableFluentBuilder::tags) / [`set_tags(Option<Vec::<Tag>>)`](crate::operation::create_table::builders::CreateTableFluentBuilder::set_tags):<br>required: **false**<br><p>A list of key-value pair tags to be attached to the resource. </p> <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><br>
/// - [`client_side_timestamps(ClientSideTimestamps)`](crate::operation::create_table::builders::CreateTableFluentBuilder::client_side_timestamps) / [`set_client_side_timestamps(Option<ClientSideTimestamps>)`](crate::operation::create_table::builders::CreateTableFluentBuilder::set_client_side_timestamps):<br>required: **false**<br><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> <ul> <li> <p> <code>status: "enabled"</code> </p> </li> </ul> <p>Once client-side timestamps are enabled for a table, this setting cannot be disabled.</p><br>
/// - On success, responds with [`CreateTableOutput`](crate::operation::create_table::CreateTableOutput) with field(s):
/// - [`resource_arn(String)`](crate::operation::create_table::CreateTableOutput::resource_arn): <p>The unique identifier of the table in the format of an Amazon Resource Name (ARN).</p>
/// - On failure, responds with [`SdkError<CreateTableError>`](crate::operation::create_table::CreateTableError)
pub fn create_table(&self) -> crate::operation::create_table::builders::CreateTableFluentBuilder {
crate::operation::create_table::builders::CreateTableFluentBuilder::new(self.handle.clone())
}
}