All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.cloudshiftdev.awscdk.services.cassandra.CfnTableProps.kt Maven / Gradle / Ivy

The newest version!
@file:Suppress("RedundantVisibilityModifier","RedundantUnitReturnType","RemoveRedundantQualifierName","unused","UnusedImport","ClassName","REDUNDANT_PROJECTION","DEPRECATION")

package io.cloudshiftdev.awscdk.services.cassandra

import io.cloudshiftdev.awscdk.CfnTag
import io.cloudshiftdev.awscdk.IResolvable
import io.cloudshiftdev.awscdk.common.CdkDslMarker
import io.cloudshiftdev.awscdk.common.CdkObject
import io.cloudshiftdev.awscdk.common.CdkObjectWrappers
import kotlin.Any
import kotlin.Boolean
import kotlin.Number
import kotlin.String
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 * Properties for defining a `CfnTable`.
 *
 * Example:
 *
 * ```
 * // The code below shows an example of how to instantiate this type.
 * // The values are placeholders you should change.
 * import io.cloudshiftdev.awscdk.services.cassandra.*;
 * CfnTableProps cfnTableProps = CfnTableProps.builder()
 * .keyspaceName("keyspaceName")
 * .partitionKeyColumns(List.of(ColumnProperty.builder()
 * .columnName("columnName")
 * .columnType("columnType")
 * .build()))
 * // the properties below are optional
 * .autoScalingSpecifications(AutoScalingSpecificationProperty.builder()
 * .readCapacityAutoScaling(AutoScalingSettingProperty.builder()
 * .autoScalingDisabled(false)
 * .maximumUnits(123)
 * .minimumUnits(123)
 * .scalingPolicy(ScalingPolicyProperty.builder()
 * .targetTrackingScalingPolicyConfiguration(TargetTrackingScalingPolicyConfigurationProperty.builder()
 * .targetValue(123)
 * // the properties below are optional
 * .disableScaleIn(false)
 * .scaleInCooldown(123)
 * .scaleOutCooldown(123)
 * .build())
 * .build())
 * .build())
 * .writeCapacityAutoScaling(AutoScalingSettingProperty.builder()
 * .autoScalingDisabled(false)
 * .maximumUnits(123)
 * .minimumUnits(123)
 * .scalingPolicy(ScalingPolicyProperty.builder()
 * .targetTrackingScalingPolicyConfiguration(TargetTrackingScalingPolicyConfigurationProperty.builder()
 * .targetValue(123)
 * // the properties below are optional
 * .disableScaleIn(false)
 * .scaleInCooldown(123)
 * .scaleOutCooldown(123)
 * .build())
 * .build())
 * .build())
 * .build())
 * .billingMode(BillingModeProperty.builder()
 * .mode("mode")
 * // the properties below are optional
 * .provisionedThroughput(ProvisionedThroughputProperty.builder()
 * .readCapacityUnits(123)
 * .writeCapacityUnits(123)
 * .build())
 * .build())
 * .clientSideTimestampsEnabled(false)
 * .clusteringKeyColumns(List.of(ClusteringKeyColumnProperty.builder()
 * .column(ColumnProperty.builder()
 * .columnName("columnName")
 * .columnType("columnType")
 * .build())
 * // the properties below are optional
 * .orderBy("orderBy")
 * .build()))
 * .defaultTimeToLive(123)
 * .encryptionSpecification(EncryptionSpecificationProperty.builder()
 * .encryptionType("encryptionType")
 * // the properties below are optional
 * .kmsKeyIdentifier("kmsKeyIdentifier")
 * .build())
 * .pointInTimeRecoveryEnabled(false)
 * .regularColumns(List.of(ColumnProperty.builder()
 * .columnName("columnName")
 * .columnType("columnType")
 * .build()))
 * .replicaSpecifications(List.of(ReplicaSpecificationProperty.builder()
 * .region("region")
 * // the properties below are optional
 * .readCapacityAutoScaling(AutoScalingSettingProperty.builder()
 * .autoScalingDisabled(false)
 * .maximumUnits(123)
 * .minimumUnits(123)
 * .scalingPolicy(ScalingPolicyProperty.builder()
 * .targetTrackingScalingPolicyConfiguration(TargetTrackingScalingPolicyConfigurationProperty.builder()
 * .targetValue(123)
 * // the properties below are optional
 * .disableScaleIn(false)
 * .scaleInCooldown(123)
 * .scaleOutCooldown(123)
 * .build())
 * .build())
 * .build())
 * .readCapacityUnits(123)
 * .build()))
 * .tableName("tableName")
 * .tags(List.of(CfnTag.builder()
 * .key("key")
 * .value("value")
 * .build()))
 * .build();
 * ```
 *
 * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cassandra-table.html)
 */
public interface CfnTableProps {
  /**
   * The optional auto scaling capacity settings for a table in provisioned capacity mode.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cassandra-table.html#cfn-cassandra-table-autoscalingspecifications)
   */
  public fun autoScalingSpecifications(): Any? = unwrap(this).getAutoScalingSpecifications()

  /**
   * The billing mode for the table, which determines how you'll be charged for reads and writes:.
   *
   * * *On-demand mode* (default) - You pay based on the actual reads and writes your application
   * performs.
   * * *Provisioned mode* - Lets you specify the number of reads and writes per second that you need
   * for your application.
   *
   * If you don't specify a value for this property, then the table will use on-demand mode.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cassandra-table.html#cfn-cassandra-table-billingmode)
   */
  public fun billingMode(): Any? = unwrap(this).getBillingMode()

  /**
   * Enables client-side timestamps for the table.
   *
   * By default, the setting is disabled. You can enable client-side timestamps with the following
   * option:
   *
   * * `status: "enabled"`
   *
   * After client-side timestamps are enabled for a table, you can't disable this setting.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cassandra-table.html#cfn-cassandra-table-clientsidetimestampsenabled)
   */
  public fun clientSideTimestampsEnabled(): Any? = unwrap(this).getClientSideTimestampsEnabled()

  /**
   * One or more columns that determine how the table data is sorted.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cassandra-table.html#cfn-cassandra-table-clusteringkeycolumns)
   */
  public fun clusteringKeyColumns(): Any? = unwrap(this).getClusteringKeyColumns()

  /**
   * The default Time To Live (TTL) value for all rows in a table in seconds.
   *
   * The maximum configurable value is 630,720,000 seconds, which is the equivalent of 20 years. By
   * default, the TTL value for a table is 0, which means data does not expire.
   *
   * For more information, see [Setting the default TTL value for a
   * table](https://docs.aws.amazon.com/keyspaces/latest/devguide/TTL-how-it-works.html#ttl-howitworks_default_ttl)
   * in the *Amazon Keyspaces Developer Guide* .
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cassandra-table.html#cfn-cassandra-table-defaulttimetolive)
   */
  public fun defaultTimeToLive(): Number? = unwrap(this).getDefaultTimeToLive()

  /**
   * The encryption at rest options for the table.
   *
   * * *AWS owned key* (default) - The key is owned by Amazon Keyspaces .
   * * *Customer managed key* - The key is stored in your account and is created, owned, and managed
   * by you.
   *
   *
   * If you choose encryption with a customer managed key, you must specify a valid customer managed
   * KMS key with permissions granted to Amazon Keyspaces.
   *
   *
   * For more information, see [Encryption at rest in Amazon
   * Keyspaces](https://docs.aws.amazon.com/keyspaces/latest/devguide/EncryptionAtRest.html) in the
   * *Amazon Keyspaces Developer Guide* .
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cassandra-table.html#cfn-cassandra-table-encryptionspecification)
   */
  public fun encryptionSpecification(): Any? = unwrap(this).getEncryptionSpecification()

  /**
   * The name of the keyspace to create the table in.
   *
   * The keyspace must already exist.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cassandra-table.html#cfn-cassandra-table-keyspacename)
   */
  public fun keyspaceName(): String

  /**
   * One or more columns that uniquely identify every row in the table.
   *
   * Every table must have a partition key.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cassandra-table.html#cfn-cassandra-table-partitionkeycolumns)
   */
  public fun partitionKeyColumns(): Any

  /**
   * Specifies if point-in-time recovery is enabled or disabled for the table.
   *
   * The options are `PointInTimeRecoveryEnabled=true` and `PointInTimeRecoveryEnabled=false` . If
   * not specified, the default is `PointInTimeRecoveryEnabled=false` .
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cassandra-table.html#cfn-cassandra-table-pointintimerecoveryenabled)
   */
  public fun pointInTimeRecoveryEnabled(): Any? = unwrap(this).getPointInTimeRecoveryEnabled()

  /**
   * One or more columns that are not part of the primary key - that is, columns that are *not*
   * defined as partition key columns or clustering key columns.
   *
   * You can add regular columns to existing tables by adding them to the template.
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cassandra-table.html#cfn-cassandra-table-regularcolumns)
   */
  public fun regularColumns(): Any? = unwrap(this).getRegularColumns()

  /**
   * The AWS Region specific settings of a multi-Region table.
   *
   * For a multi-Region table, you can configure the table's read capacity differently per AWS
   * Region. You can do this by configuring the following parameters.
   *
   * * `region` : The Region where these settings are applied. (Required)
   * * `readCapacityUnits` : The provisioned read capacity units. (Optional)
   * * `readCapacityAutoScaling` : The read capacity auto scaling settings for the table. (Optional)
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cassandra-table.html#cfn-cassandra-table-replicaspecifications)
   */
  public fun replicaSpecifications(): Any? = unwrap(this).getReplicaSpecifications()

  /**
   * The name of the table to be created.
   *
   * The table name is case sensitive. If you don't specify a name, AWS CloudFormation generates a
   * unique ID and uses that ID for the table name. For more information, see [Name
   * type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html) .
   *
   *
   * If you specify a name, you can't perform updates that require replacing this resource. You can
   * perform updates that require no interruption or some interruption. If you must replace the
   * resource, specify a new name.
   *
   *
   * *Length constraints:* Minimum length of 3. Maximum length of 255.
   *
   * *Pattern:* `^[a-zA-Z0-9][a-zA-Z0-9_]{1,47}$`
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cassandra-table.html#cfn-cassandra-table-tablename)
   */
  public fun tableName(): String? = unwrap(this).getTableName()

  /**
   * An array of key-value pairs to apply to this resource.
   *
   * For more information, see
   * [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html)
   * .
   *
   * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cassandra-table.html#cfn-cassandra-table-tags)
   */
  public fun tags(): List = unwrap(this).getTags()?.map(CfnTag::wrap) ?: emptyList()

  /**
   * A builder for [CfnTableProps]
   */
  @CdkDslMarker
  public interface Builder {
    /**
     * @param autoScalingSpecifications The optional auto scaling capacity settings for a table in
     * provisioned capacity mode.
     */
    public fun autoScalingSpecifications(autoScalingSpecifications: IResolvable)

    /**
     * @param autoScalingSpecifications The optional auto scaling capacity settings for a table in
     * provisioned capacity mode.
     */
    public
        fun autoScalingSpecifications(autoScalingSpecifications: CfnTable.AutoScalingSpecificationProperty)

    /**
     * @param autoScalingSpecifications The optional auto scaling capacity settings for a table in
     * provisioned capacity mode.
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("b1ed334d8d048ad1a63723888ba6b52a5733fd3ca7d135585407a63652fbb423")
    public
        fun autoScalingSpecifications(autoScalingSpecifications: CfnTable.AutoScalingSpecificationProperty.Builder.() -> Unit)

    /**
     * @param billingMode The billing mode for the table, which determines how you'll be charged for
     * reads and writes:.
     * * *On-demand mode* (default) - You pay based on the actual reads and writes your application
     * performs.
     * * *Provisioned mode* - Lets you specify the number of reads and writes per second that you
     * need for your application.
     *
     * If you don't specify a value for this property, then the table will use on-demand mode.
     */
    public fun billingMode(billingMode: IResolvable)

    /**
     * @param billingMode The billing mode for the table, which determines how you'll be charged for
     * reads and writes:.
     * * *On-demand mode* (default) - You pay based on the actual reads and writes your application
     * performs.
     * * *Provisioned mode* - Lets you specify the number of reads and writes per second that you
     * need for your application.
     *
     * If you don't specify a value for this property, then the table will use on-demand mode.
     */
    public fun billingMode(billingMode: CfnTable.BillingModeProperty)

    /**
     * @param billingMode The billing mode for the table, which determines how you'll be charged for
     * reads and writes:.
     * * *On-demand mode* (default) - You pay based on the actual reads and writes your application
     * performs.
     * * *Provisioned mode* - Lets you specify the number of reads and writes per second that you
     * need for your application.
     *
     * If you don't specify a value for this property, then the table will use on-demand mode.
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("fb8d6dbc6f6662222780a9bfad95d32dd40625124100e2249da324e1eed3c3b3")
    public fun billingMode(billingMode: CfnTable.BillingModeProperty.Builder.() -> Unit)

    /**
     * @param clientSideTimestampsEnabled Enables client-side timestamps for the table.
     * By default, the setting is disabled. You can enable client-side timestamps with the following
     * option:
     *
     * * `status: "enabled"`
     *
     * After client-side timestamps are enabled for a table, you can't disable this setting.
     */
    public fun clientSideTimestampsEnabled(clientSideTimestampsEnabled: Boolean)

    /**
     * @param clientSideTimestampsEnabled Enables client-side timestamps for the table.
     * By default, the setting is disabled. You can enable client-side timestamps with the following
     * option:
     *
     * * `status: "enabled"`
     *
     * After client-side timestamps are enabled for a table, you can't disable this setting.
     */
    public fun clientSideTimestampsEnabled(clientSideTimestampsEnabled: IResolvable)

    /**
     * @param clusteringKeyColumns One or more columns that determine how the table data is sorted.
     */
    public fun clusteringKeyColumns(clusteringKeyColumns: IResolvable)

    /**
     * @param clusteringKeyColumns One or more columns that determine how the table data is sorted.
     */
    public fun clusteringKeyColumns(clusteringKeyColumns: List)

    /**
     * @param clusteringKeyColumns One or more columns that determine how the table data is sorted.
     */
    public fun clusteringKeyColumns(vararg clusteringKeyColumns: Any)

    /**
     * @param defaultTimeToLive The default Time To Live (TTL) value for all rows in a table in
     * seconds.
     * The maximum configurable value is 630,720,000 seconds, which is the equivalent of 20 years.
     * By default, the TTL value for a table is 0, which means data does not expire.
     *
     * For more information, see [Setting the default TTL value for a
     * table](https://docs.aws.amazon.com/keyspaces/latest/devguide/TTL-how-it-works.html#ttl-howitworks_default_ttl)
     * in the *Amazon Keyspaces Developer Guide* .
     */
    public fun defaultTimeToLive(defaultTimeToLive: Number)

    /**
     * @param encryptionSpecification The encryption at rest options for the table.
     * * *AWS owned key* (default) - The key is owned by Amazon Keyspaces .
     * * *Customer managed key* - The key is stored in your account and is created, owned, and
     * managed by you.
     *
     *
     * If you choose encryption with a customer managed key, you must specify a valid customer
     * managed KMS key with permissions granted to Amazon Keyspaces.
     *
     *
     * For more information, see [Encryption at rest in Amazon
     * Keyspaces](https://docs.aws.amazon.com/keyspaces/latest/devguide/EncryptionAtRest.html) in the
     * *Amazon Keyspaces Developer Guide* .
     */
    public fun encryptionSpecification(encryptionSpecification: IResolvable)

    /**
     * @param encryptionSpecification The encryption at rest options for the table.
     * * *AWS owned key* (default) - The key is owned by Amazon Keyspaces .
     * * *Customer managed key* - The key is stored in your account and is created, owned, and
     * managed by you.
     *
     *
     * If you choose encryption with a customer managed key, you must specify a valid customer
     * managed KMS key with permissions granted to Amazon Keyspaces.
     *
     *
     * For more information, see [Encryption at rest in Amazon
     * Keyspaces](https://docs.aws.amazon.com/keyspaces/latest/devguide/EncryptionAtRest.html) in the
     * *Amazon Keyspaces Developer Guide* .
     */
    public
        fun encryptionSpecification(encryptionSpecification: CfnTable.EncryptionSpecificationProperty)

    /**
     * @param encryptionSpecification The encryption at rest options for the table.
     * * *AWS owned key* (default) - The key is owned by Amazon Keyspaces .
     * * *Customer managed key* - The key is stored in your account and is created, owned, and
     * managed by you.
     *
     *
     * If you choose encryption with a customer managed key, you must specify a valid customer
     * managed KMS key with permissions granted to Amazon Keyspaces.
     *
     *
     * For more information, see [Encryption at rest in Amazon
     * Keyspaces](https://docs.aws.amazon.com/keyspaces/latest/devguide/EncryptionAtRest.html) in the
     * *Amazon Keyspaces Developer Guide* .
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("ced13bae27275c155e5090b60d17a496dae2ef4db4b0a95625f4b87fb275de61")
    public
        fun encryptionSpecification(encryptionSpecification: CfnTable.EncryptionSpecificationProperty.Builder.() -> Unit)

    /**
     * @param keyspaceName The name of the keyspace to create the table in. 
     * The keyspace must already exist.
     */
    public fun keyspaceName(keyspaceName: String)

    /**
     * @param partitionKeyColumns One or more columns that uniquely identify every row in the table.
     * 
     * Every table must have a partition key.
     */
    public fun partitionKeyColumns(partitionKeyColumns: IResolvable)

    /**
     * @param partitionKeyColumns One or more columns that uniquely identify every row in the table.
     * 
     * Every table must have a partition key.
     */
    public fun partitionKeyColumns(partitionKeyColumns: List)

    /**
     * @param partitionKeyColumns One or more columns that uniquely identify every row in the table.
     * 
     * Every table must have a partition key.
     */
    public fun partitionKeyColumns(vararg partitionKeyColumns: Any)

    /**
     * @param pointInTimeRecoveryEnabled Specifies if point-in-time recovery is enabled or disabled
     * for the table.
     * The options are `PointInTimeRecoveryEnabled=true` and `PointInTimeRecoveryEnabled=false` . If
     * not specified, the default is `PointInTimeRecoveryEnabled=false` .
     */
    public fun pointInTimeRecoveryEnabled(pointInTimeRecoveryEnabled: Boolean)

    /**
     * @param pointInTimeRecoveryEnabled Specifies if point-in-time recovery is enabled or disabled
     * for the table.
     * The options are `PointInTimeRecoveryEnabled=true` and `PointInTimeRecoveryEnabled=false` . If
     * not specified, the default is `PointInTimeRecoveryEnabled=false` .
     */
    public fun pointInTimeRecoveryEnabled(pointInTimeRecoveryEnabled: IResolvable)

    /**
     * @param regularColumns One or more columns that are not part of the primary key - that is,
     * columns that are *not* defined as partition key columns or clustering key columns.
     * You can add regular columns to existing tables by adding them to the template.
     */
    public fun regularColumns(regularColumns: IResolvable)

    /**
     * @param regularColumns One or more columns that are not part of the primary key - that is,
     * columns that are *not* defined as partition key columns or clustering key columns.
     * You can add regular columns to existing tables by adding them to the template.
     */
    public fun regularColumns(regularColumns: List)

    /**
     * @param regularColumns One or more columns that are not part of the primary key - that is,
     * columns that are *not* defined as partition key columns or clustering key columns.
     * You can add regular columns to existing tables by adding them to the template.
     */
    public fun regularColumns(vararg regularColumns: Any)

    /**
     * @param replicaSpecifications The AWS Region specific settings of a multi-Region table.
     * For a multi-Region table, you can configure the table's read capacity differently per AWS
     * Region. You can do this by configuring the following parameters.
     *
     * * `region` : The Region where these settings are applied. (Required)
     * * `readCapacityUnits` : The provisioned read capacity units. (Optional)
     * * `readCapacityAutoScaling` : The read capacity auto scaling settings for the table.
     * (Optional)
     */
    public fun replicaSpecifications(replicaSpecifications: IResolvable)

    /**
     * @param replicaSpecifications The AWS Region specific settings of a multi-Region table.
     * For a multi-Region table, you can configure the table's read capacity differently per AWS
     * Region. You can do this by configuring the following parameters.
     *
     * * `region` : The Region where these settings are applied. (Required)
     * * `readCapacityUnits` : The provisioned read capacity units. (Optional)
     * * `readCapacityAutoScaling` : The read capacity auto scaling settings for the table.
     * (Optional)
     */
    public fun replicaSpecifications(replicaSpecifications: List)

    /**
     * @param replicaSpecifications The AWS Region specific settings of a multi-Region table.
     * For a multi-Region table, you can configure the table's read capacity differently per AWS
     * Region. You can do this by configuring the following parameters.
     *
     * * `region` : The Region where these settings are applied. (Required)
     * * `readCapacityUnits` : The provisioned read capacity units. (Optional)
     * * `readCapacityAutoScaling` : The read capacity auto scaling settings for the table.
     * (Optional)
     */
    public fun replicaSpecifications(vararg replicaSpecifications: Any)

    /**
     * @param tableName The name of the table to be created.
     * The table name is case sensitive. If you don't specify a name, AWS CloudFormation generates a
     * unique ID and uses that ID for the table name. For more information, see [Name
     * type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html) .
     *
     *
     * If you specify a name, you can't perform updates that require replacing this resource. You
     * can perform updates that require no interruption or some interruption. If you must replace the
     * resource, specify a new name.
     *
     *
     * *Length constraints:* Minimum length of 3. Maximum length of 255.
     *
     * *Pattern:* `^[a-zA-Z0-9][a-zA-Z0-9_]{1,47}$`
     */
    public fun tableName(tableName: String)

    /**
     * @param tags An array of key-value pairs to apply to this resource.
     * For more information, see
     * [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html)
     * .
     */
    public fun tags(tags: List)

    /**
     * @param tags An array of key-value pairs to apply to this resource.
     * For more information, see
     * [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html)
     * .
     */
    public fun tags(vararg tags: CfnTag)
  }

  private class BuilderImpl : Builder {
    private val cdkBuilder: software.amazon.awscdk.services.cassandra.CfnTableProps.Builder =
        software.amazon.awscdk.services.cassandra.CfnTableProps.builder()

    /**
     * @param autoScalingSpecifications The optional auto scaling capacity settings for a table in
     * provisioned capacity mode.
     */
    override fun autoScalingSpecifications(autoScalingSpecifications: IResolvable) {
      cdkBuilder.autoScalingSpecifications(autoScalingSpecifications.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param autoScalingSpecifications The optional auto scaling capacity settings for a table in
     * provisioned capacity mode.
     */
    override
        fun autoScalingSpecifications(autoScalingSpecifications: CfnTable.AutoScalingSpecificationProperty) {
      cdkBuilder.autoScalingSpecifications(autoScalingSpecifications.let(CfnTable.AutoScalingSpecificationProperty.Companion::unwrap))
    }

    /**
     * @param autoScalingSpecifications The optional auto scaling capacity settings for a table in
     * provisioned capacity mode.
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("b1ed334d8d048ad1a63723888ba6b52a5733fd3ca7d135585407a63652fbb423")
    override
        fun autoScalingSpecifications(autoScalingSpecifications: CfnTable.AutoScalingSpecificationProperty.Builder.() -> Unit):
        Unit =
        autoScalingSpecifications(CfnTable.AutoScalingSpecificationProperty(autoScalingSpecifications))

    /**
     * @param billingMode The billing mode for the table, which determines how you'll be charged for
     * reads and writes:.
     * * *On-demand mode* (default) - You pay based on the actual reads and writes your application
     * performs.
     * * *Provisioned mode* - Lets you specify the number of reads and writes per second that you
     * need for your application.
     *
     * If you don't specify a value for this property, then the table will use on-demand mode.
     */
    override fun billingMode(billingMode: IResolvable) {
      cdkBuilder.billingMode(billingMode.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param billingMode The billing mode for the table, which determines how you'll be charged for
     * reads and writes:.
     * * *On-demand mode* (default) - You pay based on the actual reads and writes your application
     * performs.
     * * *Provisioned mode* - Lets you specify the number of reads and writes per second that you
     * need for your application.
     *
     * If you don't specify a value for this property, then the table will use on-demand mode.
     */
    override fun billingMode(billingMode: CfnTable.BillingModeProperty) {
      cdkBuilder.billingMode(billingMode.let(CfnTable.BillingModeProperty.Companion::unwrap))
    }

    /**
     * @param billingMode The billing mode for the table, which determines how you'll be charged for
     * reads and writes:.
     * * *On-demand mode* (default) - You pay based on the actual reads and writes your application
     * performs.
     * * *Provisioned mode* - Lets you specify the number of reads and writes per second that you
     * need for your application.
     *
     * If you don't specify a value for this property, then the table will use on-demand mode.
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("fb8d6dbc6f6662222780a9bfad95d32dd40625124100e2249da324e1eed3c3b3")
    override fun billingMode(billingMode: CfnTable.BillingModeProperty.Builder.() -> Unit): Unit =
        billingMode(CfnTable.BillingModeProperty(billingMode))

    /**
     * @param clientSideTimestampsEnabled Enables client-side timestamps for the table.
     * By default, the setting is disabled. You can enable client-side timestamps with the following
     * option:
     *
     * * `status: "enabled"`
     *
     * After client-side timestamps are enabled for a table, you can't disable this setting.
     */
    override fun clientSideTimestampsEnabled(clientSideTimestampsEnabled: Boolean) {
      cdkBuilder.clientSideTimestampsEnabled(clientSideTimestampsEnabled)
    }

    /**
     * @param clientSideTimestampsEnabled Enables client-side timestamps for the table.
     * By default, the setting is disabled. You can enable client-side timestamps with the following
     * option:
     *
     * * `status: "enabled"`
     *
     * After client-side timestamps are enabled for a table, you can't disable this setting.
     */
    override fun clientSideTimestampsEnabled(clientSideTimestampsEnabled: IResolvable) {
      cdkBuilder.clientSideTimestampsEnabled(clientSideTimestampsEnabled.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param clusteringKeyColumns One or more columns that determine how the table data is sorted.
     */
    override fun clusteringKeyColumns(clusteringKeyColumns: IResolvable) {
      cdkBuilder.clusteringKeyColumns(clusteringKeyColumns.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param clusteringKeyColumns One or more columns that determine how the table data is sorted.
     */
    override fun clusteringKeyColumns(clusteringKeyColumns: List) {
      cdkBuilder.clusteringKeyColumns(clusteringKeyColumns.map{CdkObjectWrappers.unwrap(it)})
    }

    /**
     * @param clusteringKeyColumns One or more columns that determine how the table data is sorted.
     */
    override fun clusteringKeyColumns(vararg clusteringKeyColumns: Any): Unit =
        clusteringKeyColumns(clusteringKeyColumns.toList())

    /**
     * @param defaultTimeToLive The default Time To Live (TTL) value for all rows in a table in
     * seconds.
     * The maximum configurable value is 630,720,000 seconds, which is the equivalent of 20 years.
     * By default, the TTL value for a table is 0, which means data does not expire.
     *
     * For more information, see [Setting the default TTL value for a
     * table](https://docs.aws.amazon.com/keyspaces/latest/devguide/TTL-how-it-works.html#ttl-howitworks_default_ttl)
     * in the *Amazon Keyspaces Developer Guide* .
     */
    override fun defaultTimeToLive(defaultTimeToLive: Number) {
      cdkBuilder.defaultTimeToLive(defaultTimeToLive)
    }

    /**
     * @param encryptionSpecification The encryption at rest options for the table.
     * * *AWS owned key* (default) - The key is owned by Amazon Keyspaces .
     * * *Customer managed key* - The key is stored in your account and is created, owned, and
     * managed by you.
     *
     *
     * If you choose encryption with a customer managed key, you must specify a valid customer
     * managed KMS key with permissions granted to Amazon Keyspaces.
     *
     *
     * For more information, see [Encryption at rest in Amazon
     * Keyspaces](https://docs.aws.amazon.com/keyspaces/latest/devguide/EncryptionAtRest.html) in the
     * *Amazon Keyspaces Developer Guide* .
     */
    override fun encryptionSpecification(encryptionSpecification: IResolvable) {
      cdkBuilder.encryptionSpecification(encryptionSpecification.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param encryptionSpecification The encryption at rest options for the table.
     * * *AWS owned key* (default) - The key is owned by Amazon Keyspaces .
     * * *Customer managed key* - The key is stored in your account and is created, owned, and
     * managed by you.
     *
     *
     * If you choose encryption with a customer managed key, you must specify a valid customer
     * managed KMS key with permissions granted to Amazon Keyspaces.
     *
     *
     * For more information, see [Encryption at rest in Amazon
     * Keyspaces](https://docs.aws.amazon.com/keyspaces/latest/devguide/EncryptionAtRest.html) in the
     * *Amazon Keyspaces Developer Guide* .
     */
    override
        fun encryptionSpecification(encryptionSpecification: CfnTable.EncryptionSpecificationProperty) {
      cdkBuilder.encryptionSpecification(encryptionSpecification.let(CfnTable.EncryptionSpecificationProperty.Companion::unwrap))
    }

    /**
     * @param encryptionSpecification The encryption at rest options for the table.
     * * *AWS owned key* (default) - The key is owned by Amazon Keyspaces .
     * * *Customer managed key* - The key is stored in your account and is created, owned, and
     * managed by you.
     *
     *
     * If you choose encryption with a customer managed key, you must specify a valid customer
     * managed KMS key with permissions granted to Amazon Keyspaces.
     *
     *
     * For more information, see [Encryption at rest in Amazon
     * Keyspaces](https://docs.aws.amazon.com/keyspaces/latest/devguide/EncryptionAtRest.html) in the
     * *Amazon Keyspaces Developer Guide* .
     */
    @kotlin.Suppress("INAPPLICABLE_JVM_NAME")
    @JvmName("ced13bae27275c155e5090b60d17a496dae2ef4db4b0a95625f4b87fb275de61")
    override
        fun encryptionSpecification(encryptionSpecification: CfnTable.EncryptionSpecificationProperty.Builder.() -> Unit):
        Unit =
        encryptionSpecification(CfnTable.EncryptionSpecificationProperty(encryptionSpecification))

    /**
     * @param keyspaceName The name of the keyspace to create the table in. 
     * The keyspace must already exist.
     */
    override fun keyspaceName(keyspaceName: String) {
      cdkBuilder.keyspaceName(keyspaceName)
    }

    /**
     * @param partitionKeyColumns One or more columns that uniquely identify every row in the table.
     * 
     * Every table must have a partition key.
     */
    override fun partitionKeyColumns(partitionKeyColumns: IResolvable) {
      cdkBuilder.partitionKeyColumns(partitionKeyColumns.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param partitionKeyColumns One or more columns that uniquely identify every row in the table.
     * 
     * Every table must have a partition key.
     */
    override fun partitionKeyColumns(partitionKeyColumns: List) {
      cdkBuilder.partitionKeyColumns(partitionKeyColumns.map{CdkObjectWrappers.unwrap(it)})
    }

    /**
     * @param partitionKeyColumns One or more columns that uniquely identify every row in the table.
     * 
     * Every table must have a partition key.
     */
    override fun partitionKeyColumns(vararg partitionKeyColumns: Any): Unit =
        partitionKeyColumns(partitionKeyColumns.toList())

    /**
     * @param pointInTimeRecoveryEnabled Specifies if point-in-time recovery is enabled or disabled
     * for the table.
     * The options are `PointInTimeRecoveryEnabled=true` and `PointInTimeRecoveryEnabled=false` . If
     * not specified, the default is `PointInTimeRecoveryEnabled=false` .
     */
    override fun pointInTimeRecoveryEnabled(pointInTimeRecoveryEnabled: Boolean) {
      cdkBuilder.pointInTimeRecoveryEnabled(pointInTimeRecoveryEnabled)
    }

    /**
     * @param pointInTimeRecoveryEnabled Specifies if point-in-time recovery is enabled or disabled
     * for the table.
     * The options are `PointInTimeRecoveryEnabled=true` and `PointInTimeRecoveryEnabled=false` . If
     * not specified, the default is `PointInTimeRecoveryEnabled=false` .
     */
    override fun pointInTimeRecoveryEnabled(pointInTimeRecoveryEnabled: IResolvable) {
      cdkBuilder.pointInTimeRecoveryEnabled(pointInTimeRecoveryEnabled.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param regularColumns One or more columns that are not part of the primary key - that is,
     * columns that are *not* defined as partition key columns or clustering key columns.
     * You can add regular columns to existing tables by adding them to the template.
     */
    override fun regularColumns(regularColumns: IResolvable) {
      cdkBuilder.regularColumns(regularColumns.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param regularColumns One or more columns that are not part of the primary key - that is,
     * columns that are *not* defined as partition key columns or clustering key columns.
     * You can add regular columns to existing tables by adding them to the template.
     */
    override fun regularColumns(regularColumns: List) {
      cdkBuilder.regularColumns(regularColumns.map{CdkObjectWrappers.unwrap(it)})
    }

    /**
     * @param regularColumns One or more columns that are not part of the primary key - that is,
     * columns that are *not* defined as partition key columns or clustering key columns.
     * You can add regular columns to existing tables by adding them to the template.
     */
    override fun regularColumns(vararg regularColumns: Any): Unit =
        regularColumns(regularColumns.toList())

    /**
     * @param replicaSpecifications The AWS Region specific settings of a multi-Region table.
     * For a multi-Region table, you can configure the table's read capacity differently per AWS
     * Region. You can do this by configuring the following parameters.
     *
     * * `region` : The Region where these settings are applied. (Required)
     * * `readCapacityUnits` : The provisioned read capacity units. (Optional)
     * * `readCapacityAutoScaling` : The read capacity auto scaling settings for the table.
     * (Optional)
     */
    override fun replicaSpecifications(replicaSpecifications: IResolvable) {
      cdkBuilder.replicaSpecifications(replicaSpecifications.let(IResolvable.Companion::unwrap))
    }

    /**
     * @param replicaSpecifications The AWS Region specific settings of a multi-Region table.
     * For a multi-Region table, you can configure the table's read capacity differently per AWS
     * Region. You can do this by configuring the following parameters.
     *
     * * `region` : The Region where these settings are applied. (Required)
     * * `readCapacityUnits` : The provisioned read capacity units. (Optional)
     * * `readCapacityAutoScaling` : The read capacity auto scaling settings for the table.
     * (Optional)
     */
    override fun replicaSpecifications(replicaSpecifications: List) {
      cdkBuilder.replicaSpecifications(replicaSpecifications.map{CdkObjectWrappers.unwrap(it)})
    }

    /**
     * @param replicaSpecifications The AWS Region specific settings of a multi-Region table.
     * For a multi-Region table, you can configure the table's read capacity differently per AWS
     * Region. You can do this by configuring the following parameters.
     *
     * * `region` : The Region where these settings are applied. (Required)
     * * `readCapacityUnits` : The provisioned read capacity units. (Optional)
     * * `readCapacityAutoScaling` : The read capacity auto scaling settings for the table.
     * (Optional)
     */
    override fun replicaSpecifications(vararg replicaSpecifications: Any): Unit =
        replicaSpecifications(replicaSpecifications.toList())

    /**
     * @param tableName The name of the table to be created.
     * The table name is case sensitive. If you don't specify a name, AWS CloudFormation generates a
     * unique ID and uses that ID for the table name. For more information, see [Name
     * type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html) .
     *
     *
     * If you specify a name, you can't perform updates that require replacing this resource. You
     * can perform updates that require no interruption or some interruption. If you must replace the
     * resource, specify a new name.
     *
     *
     * *Length constraints:* Minimum length of 3. Maximum length of 255.
     *
     * *Pattern:* `^[a-zA-Z0-9][a-zA-Z0-9_]{1,47}$`
     */
    override fun tableName(tableName: String) {
      cdkBuilder.tableName(tableName)
    }

    /**
     * @param tags An array of key-value pairs to apply to this resource.
     * For more information, see
     * [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html)
     * .
     */
    override fun tags(tags: List) {
      cdkBuilder.tags(tags.map(CfnTag.Companion::unwrap))
    }

    /**
     * @param tags An array of key-value pairs to apply to this resource.
     * For more information, see
     * [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html)
     * .
     */
    override fun tags(vararg tags: CfnTag): Unit = tags(tags.toList())

    public fun build(): software.amazon.awscdk.services.cassandra.CfnTableProps = cdkBuilder.build()
  }

  private class Wrapper(
    cdkObject: software.amazon.awscdk.services.cassandra.CfnTableProps,
  ) : CdkObject(cdkObject),
      CfnTableProps {
    /**
     * The optional auto scaling capacity settings for a table in provisioned capacity mode.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cassandra-table.html#cfn-cassandra-table-autoscalingspecifications)
     */
    override fun autoScalingSpecifications(): Any? = unwrap(this).getAutoScalingSpecifications()

    /**
     * The billing mode for the table, which determines how you'll be charged for reads and writes:.
     *
     * * *On-demand mode* (default) - You pay based on the actual reads and writes your application
     * performs.
     * * *Provisioned mode* - Lets you specify the number of reads and writes per second that you
     * need for your application.
     *
     * If you don't specify a value for this property, then the table will use on-demand mode.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cassandra-table.html#cfn-cassandra-table-billingmode)
     */
    override fun billingMode(): Any? = unwrap(this).getBillingMode()

    /**
     * Enables client-side timestamps for the table.
     *
     * By default, the setting is disabled. You can enable client-side timestamps with the following
     * option:
     *
     * * `status: "enabled"`
     *
     * After client-side timestamps are enabled for a table, you can't disable this setting.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cassandra-table.html#cfn-cassandra-table-clientsidetimestampsenabled)
     */
    override fun clientSideTimestampsEnabled(): Any? = unwrap(this).getClientSideTimestampsEnabled()

    /**
     * One or more columns that determine how the table data is sorted.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cassandra-table.html#cfn-cassandra-table-clusteringkeycolumns)
     */
    override fun clusteringKeyColumns(): Any? = unwrap(this).getClusteringKeyColumns()

    /**
     * The default Time To Live (TTL) value for all rows in a table in seconds.
     *
     * The maximum configurable value is 630,720,000 seconds, which is the equivalent of 20 years.
     * By default, the TTL value for a table is 0, which means data does not expire.
     *
     * For more information, see [Setting the default TTL value for a
     * table](https://docs.aws.amazon.com/keyspaces/latest/devguide/TTL-how-it-works.html#ttl-howitworks_default_ttl)
     * in the *Amazon Keyspaces Developer Guide* .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cassandra-table.html#cfn-cassandra-table-defaulttimetolive)
     */
    override fun defaultTimeToLive(): Number? = unwrap(this).getDefaultTimeToLive()

    /**
     * The encryption at rest options for the table.
     *
     * * *AWS owned key* (default) - The key is owned by Amazon Keyspaces .
     * * *Customer managed key* - The key is stored in your account and is created, owned, and
     * managed by you.
     *
     *
     * If you choose encryption with a customer managed key, you must specify a valid customer
     * managed KMS key with permissions granted to Amazon Keyspaces.
     *
     *
     * For more information, see [Encryption at rest in Amazon
     * Keyspaces](https://docs.aws.amazon.com/keyspaces/latest/devguide/EncryptionAtRest.html) in the
     * *Amazon Keyspaces Developer Guide* .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cassandra-table.html#cfn-cassandra-table-encryptionspecification)
     */
    override fun encryptionSpecification(): Any? = unwrap(this).getEncryptionSpecification()

    /**
     * The name of the keyspace to create the table in.
     *
     * The keyspace must already exist.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cassandra-table.html#cfn-cassandra-table-keyspacename)
     */
    override fun keyspaceName(): String = unwrap(this).getKeyspaceName()

    /**
     * One or more columns that uniquely identify every row in the table.
     *
     * Every table must have a partition key.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cassandra-table.html#cfn-cassandra-table-partitionkeycolumns)
     */
    override fun partitionKeyColumns(): Any = unwrap(this).getPartitionKeyColumns()

    /**
     * Specifies if point-in-time recovery is enabled or disabled for the table.
     *
     * The options are `PointInTimeRecoveryEnabled=true` and `PointInTimeRecoveryEnabled=false` . If
     * not specified, the default is `PointInTimeRecoveryEnabled=false` .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cassandra-table.html#cfn-cassandra-table-pointintimerecoveryenabled)
     */
    override fun pointInTimeRecoveryEnabled(): Any? = unwrap(this).getPointInTimeRecoveryEnabled()

    /**
     * One or more columns that are not part of the primary key - that is, columns that are *not*
     * defined as partition key columns or clustering key columns.
     *
     * You can add regular columns to existing tables by adding them to the template.
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cassandra-table.html#cfn-cassandra-table-regularcolumns)
     */
    override fun regularColumns(): Any? = unwrap(this).getRegularColumns()

    /**
     * The AWS Region specific settings of a multi-Region table.
     *
     * For a multi-Region table, you can configure the table's read capacity differently per AWS
     * Region. You can do this by configuring the following parameters.
     *
     * * `region` : The Region where these settings are applied. (Required)
     * * `readCapacityUnits` : The provisioned read capacity units. (Optional)
     * * `readCapacityAutoScaling` : The read capacity auto scaling settings for the table.
     * (Optional)
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cassandra-table.html#cfn-cassandra-table-replicaspecifications)
     */
    override fun replicaSpecifications(): Any? = unwrap(this).getReplicaSpecifications()

    /**
     * The name of the table to be created.
     *
     * The table name is case sensitive. If you don't specify a name, AWS CloudFormation generates a
     * unique ID and uses that ID for the table name. For more information, see [Name
     * type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html) .
     *
     *
     * If you specify a name, you can't perform updates that require replacing this resource. You
     * can perform updates that require no interruption or some interruption. If you must replace the
     * resource, specify a new name.
     *
     *
     * *Length constraints:* Minimum length of 3. Maximum length of 255.
     *
     * *Pattern:* `^[a-zA-Z0-9][a-zA-Z0-9_]{1,47}$`
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cassandra-table.html#cfn-cassandra-table-tablename)
     */
    override fun tableName(): String? = unwrap(this).getTableName()

    /**
     * An array of key-value pairs to apply to this resource.
     *
     * For more information, see
     * [Tag](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-resource-tags.html)
     * .
     *
     * [Documentation](http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cassandra-table.html#cfn-cassandra-table-tags)
     */
    override fun tags(): List = unwrap(this).getTags()?.map(CfnTag::wrap) ?: emptyList()
  }

  public companion object {
    public operator fun invoke(block: Builder.() -> Unit = {}): CfnTableProps {
      val builderImpl = BuilderImpl()
      return Wrapper(builderImpl.apply(block).build())
    }

    internal fun wrap(cdkObject: software.amazon.awscdk.services.cassandra.CfnTableProps):
        CfnTableProps = CdkObjectWrappers.wrap(cdkObject) as? CfnTableProps ?: Wrapper(cdkObject)

    internal fun unwrap(wrapped: CfnTableProps):
        software.amazon.awscdk.services.cassandra.CfnTableProps = (wrapped as CdkObject).cdkObject
        as software.amazon.awscdk.services.cassandra.CfnTableProps
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy