/*
* Copyright 2010-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
/*
* Do not modify this file. This file is generated from the dynamodb-2012-08-10.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.DynamoDBv2.Model
{
///
/// Container for the parameters to the UpdateTable operation.
/// Modifies the provisioned throughput settings, global secondary indexes, or DynamoDB
/// Streams settings for a given table.
///
///
///
/// You can only perform one of the following operations at once:
///
/// -
///
/// Modify the provisioned throughput settings of the table.
///
///
-
///
/// Enable or disable DynamoDB Streams on the table.
///
///
-
///
/// Remove a global secondary index from the table.
///
///
-
///
/// Create a new global secondary index on the table. After the index begins backfilling,
/// you can use
UpdateTable
to perform other operations.
///
///
///
/// UpdateTable
is an asynchronous operation; while it is executing, the
/// table status changes from ACTIVE
to UPDATING
. While it is
/// UPDATING
, you cannot issue another UpdateTable
request.
/// When the table returns to the ACTIVE
state, the UpdateTable
/// operation is complete.
///
///
public partial class UpdateTableRequest : AmazonDynamoDBRequest
{
private List _attributeDefinitions = new List();
private BillingMode _billingMode;
private List _globalSecondaryIndexUpdates = new List();
private ProvisionedThroughput _provisionedThroughput;
private List _replicaUpdates = new List();
private SSESpecification _sseSpecification;
private StreamSpecification _streamSpecification;
private string _tableName;
///
/// Empty constructor used to set properties independently even when a simple constructor is available
///
public UpdateTableRequest() { }
///
/// Instantiates UpdateTableRequest with the parameterized properties
///
/// The name of the table to be updated.
/// The new provisioned throughput settings for the specified table or index.
public UpdateTableRequest(string tableName, ProvisionedThroughput provisionedThroughput)
{
_tableName = tableName;
_provisionedThroughput = provisionedThroughput;
}
///
/// Gets and sets the property AttributeDefinitions.
///
/// An array of attributes that describe the key schema for the table and indexes. If
/// you are adding a new global secondary index to the table, AttributeDefinitions
/// must include the key element(s) of the new index.
///
///
public List AttributeDefinitions
{
get { return this._attributeDefinitions; }
set { this._attributeDefinitions = value; }
}
// Check to see if AttributeDefinitions property is set
internal bool IsSetAttributeDefinitions()
{
return this._attributeDefinitions != null && this._attributeDefinitions.Count > 0;
}
///
/// Gets and sets the property BillingMode.
///
/// Controls how you are charged for read and write throughput and how you manage capacity.
/// When switching from pay-per-request to provisioned capacity, initial provisioned capacity
/// values must be set. The initial provisioned capacity values are estimated based on
/// the consumed read and write capacity of your table and global secondary indexes over
/// the past 30 minutes.
///
/// -
///
///
PROVISIONED
- We recommend using PROVISIONED
for predictable
/// workloads. PROVISIONED
sets the billing mode to Provisioned
/// Mode.
///
/// -
///
///
PAY_PER_REQUEST
- We recommend using PAY_PER_REQUEST
for
/// unpredictable workloads. PAY_PER_REQUEST
sets the billing mode to On-Demand
/// Mode.
///
///
///
public BillingMode BillingMode
{
get { return this._billingMode; }
set { this._billingMode = value; }
}
// Check to see if BillingMode property is set
internal bool IsSetBillingMode()
{
return this._billingMode != null;
}
///
/// Gets and sets the property GlobalSecondaryIndexUpdates.
///
/// An array of one or more global secondary indexes for the table. For each index in
/// the array, you can request one action:
///
/// -
///
///
Create
- add a new global secondary index to the table.
///
/// -
///
///
Update
- modify the provisioned throughput settings of an existing global
/// secondary index.
///
/// -
///
///
Delete
- remove a global secondary index from the table.
///
///
///
/// You can create or delete only one global secondary index per UpdateTable
/// operation.
///
///
///
/// For more information, see Managing
/// Global Secondary Indexes in the Amazon DynamoDB Developer Guide.
///
///
public List GlobalSecondaryIndexUpdates
{
get { return this._globalSecondaryIndexUpdates; }
set { this._globalSecondaryIndexUpdates = value; }
}
// Check to see if GlobalSecondaryIndexUpdates property is set
internal bool IsSetGlobalSecondaryIndexUpdates()
{
return this._globalSecondaryIndexUpdates != null && this._globalSecondaryIndexUpdates.Count > 0;
}
///
/// Gets and sets the property ProvisionedThroughput.
///
/// The new provisioned throughput settings for the specified table or index.
///
///
public ProvisionedThroughput ProvisionedThroughput
{
get { return this._provisionedThroughput; }
set { this._provisionedThroughput = value; }
}
// Check to see if ProvisionedThroughput property is set
internal bool IsSetProvisionedThroughput()
{
return this._provisionedThroughput != null;
}
///
/// Gets and sets the property ReplicaUpdates.
///
/// A list of replica update actions (create, delete, or update) for the table.
///
///
///
/// This property only applies to Version
/// 2019.11.21 of global tables.
///
///
///
[AWSProperty(Min=1)]
public List ReplicaUpdates
{
get { return this._replicaUpdates; }
set { this._replicaUpdates = value; }
}
// Check to see if ReplicaUpdates property is set
internal bool IsSetReplicaUpdates()
{
return this._replicaUpdates != null && this._replicaUpdates.Count > 0;
}
///
/// Gets and sets the property SSESpecification.
///
/// The new server-side encryption settings for the specified table.
///
///
public SSESpecification SSESpecification
{
get { return this._sseSpecification; }
set { this._sseSpecification = value; }
}
// Check to see if SSESpecification property is set
internal bool IsSetSSESpecification()
{
return this._sseSpecification != null;
}
///
/// Gets and sets the property StreamSpecification.
///
/// Represents the DynamoDB Streams configuration for the table.
///
///
///
/// You receive a ResourceInUseException
if you try to enable a stream on
/// a table that already has a stream, or if you try to disable a stream on a table that
/// doesn't have a stream.
///
///
///
public StreamSpecification StreamSpecification
{
get { return this._streamSpecification; }
set { this._streamSpecification = value; }
}
// Check to see if StreamSpecification property is set
internal bool IsSetStreamSpecification()
{
return this._streamSpecification != null;
}
///
/// Gets and sets the property TableName.
///
/// The name of the table to be updated.
///
///
[AWSProperty(Required=true, Min=3, Max=255)]
public string TableName
{
get { return this._tableName; }
set { this._tableName = value; }
}
// Check to see if TableName property is set
internal bool IsSetTableName()
{
return this._tableName != null;
}
}
}