/*
* 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
{
///
/// Represents the properties of a table.
///
public partial class TableDescription
{
private ArchivalSummary _archivalSummary;
private List _attributeDefinitions = new List();
private BillingModeSummary _billingModeSummary;
private DateTime? _creationDateTime;
private List _globalSecondaryIndexes = new List();
private string _globalTableVersion;
private long? _itemCount;
private List _keySchema = new List();
private string _latestStreamArn;
private string _latestStreamLabel;
private List _localSecondaryIndexes = new List();
private ProvisionedThroughputDescription _provisionedThroughput;
private List _replicas = new List();
private RestoreSummary _restoreSummary;
private SSEDescription _sseDescription;
private StreamSpecification _streamSpecification;
private string _tableArn;
private string _tableId;
private string _tableName;
private long? _tableSizeBytes;
private TableStatus _tableStatus;
///
/// Empty constructor used to set properties independently even when a simple constructor is available
///
public TableDescription() { }
///
/// Gets and sets the property ArchivalSummary.
///
/// Contains information about the table archive.
///
///
public ArchivalSummary ArchivalSummary
{
get { return this._archivalSummary; }
set { this._archivalSummary = value; }
}
// Check to see if ArchivalSummary property is set
internal bool IsSetArchivalSummary()
{
return this._archivalSummary != null;
}
///
/// Gets and sets the property AttributeDefinitions.
///
/// An array of AttributeDefinition
objects. Each of these objects describes
/// one attribute in the table and index key schema.
///
///
///
/// Each AttributeDefinition
object in this array is composed of:
///
/// -
///
///
AttributeName
- The name of the attribute.
///
/// -
///
///
AttributeType
- The data type for the attribute.
///
///
///
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 BillingModeSummary.
///
/// Contains the details for the read/write capacity mode.
///
///
public BillingModeSummary BillingModeSummary
{
get { return this._billingModeSummary; }
set { this._billingModeSummary = value; }
}
// Check to see if BillingModeSummary property is set
internal bool IsSetBillingModeSummary()
{
return this._billingModeSummary != null;
}
///
/// Gets and sets the property CreationDateTime.
///
/// The date and time when the table was created, in UNIX
/// epoch time format.
///
///
public DateTime CreationDateTime
{
get { return this._creationDateTime.GetValueOrDefault(); }
set { this._creationDateTime = value; }
}
// Check to see if CreationDateTime property is set
internal bool IsSetCreationDateTime()
{
return this._creationDateTime.HasValue;
}
///
/// Gets and sets the property GlobalSecondaryIndexes.
///
/// The global secondary indexes, if any, on the table. Each index is scoped to a given
/// partition key value. Each element is composed of:
///
/// -
///
///
Backfilling
- If true, then the index is currently in the backfilling
/// phase. Backfilling occurs only when a new global secondary index is added to the table.
/// It is the process by which DynamoDB populates the new index with data from the table.
/// (This attribute does not appear for indexes that were created during a CreateTable
/// operation.)
///
///
///
/// You can delete an index that is being created during the Backfilling
/// phase when IndexStatus
is set to CREATING and Backfilling
/// is true. You can't delete the index that is being created when IndexStatus
/// is set to CREATING and Backfilling
is false. (This attribute does not
/// appear for indexes that were created during a CreateTable
operation.)
///
/// -
///
///
IndexName
- The name of the global secondary index.
///
/// -
///
///
IndexSizeBytes
- The total size of the global secondary index, in bytes.
/// DynamoDB updates this value approximately every six hours. Recent changes might not
/// be reflected in this value.
///
/// -
///
///
IndexStatus
- The current status of the global secondary index:
///
/// -
///
///
CREATING
- The index is being created.
///
/// -
///
///
UPDATING
- The index is being updated.
///
/// -
///
///
DELETING
- The index is being deleted.
///
/// -
///
///
ACTIVE
- The index is ready for use.
///
///
-
///
///
ItemCount
- The number of items in the global secondary index. DynamoDB
/// updates this value approximately every six hours. Recent changes might not be reflected
/// in this value.
///
/// -
///
///
KeySchema
- Specifies the complete index key schema. The attribute names
/// in the key schema must be between 1 and 255 characters (inclusive). The key schema
/// must begin with the same partition key as the table.
///
/// -
///
///
Projection
- Specifies attributes that are copied (projected) from the
/// table into the index. These are in addition to the primary key attributes and index
/// key attributes, which are automatically projected. Each attribute specification is
/// composed of:
///
/// -
///
///
ProjectionType
- One of the following:
///
/// -
///
///
KEYS_ONLY
- Only the index and primary keys are projected into the index.
///
/// -
///
///
INCLUDE
- Only the specified table attributes are projected into the
/// index. The list of projected attributes is in NonKeyAttributes
.
///
/// -
///
///
ALL
- All of the table attributes are projected into the index.
///
///
-
///
///
NonKeyAttributes
- A list of one or more non-key attribute names that
/// are projected into the secondary index. The total count of attributes provided in
/// NonKeyAttributes
, summed across all of the secondary indexes, must not
/// exceed 20. If you project the same attribute into two different indexes, this counts
/// as two distinct attributes when determining the total.
///
///
-
///
///
ProvisionedThroughput
- The provisioned throughput settings for the
/// global secondary index, consisting of read and write capacity units, along with data
/// about increases and decreases.
///
///
///
/// If the table is in the DELETING
state, no information about indexes will
/// be returned.
///
///
public List GlobalSecondaryIndexes
{
get { return this._globalSecondaryIndexes; }
set { this._globalSecondaryIndexes = value; }
}
// Check to see if GlobalSecondaryIndexes property is set
internal bool IsSetGlobalSecondaryIndexes()
{
return this._globalSecondaryIndexes != null && this._globalSecondaryIndexes.Count > 0;
}
///
/// Gets and sets the property GlobalTableVersion.
///
/// Represents the version of global
/// tables in use, if the table is replicated across AWS Regions.
///
///
public string GlobalTableVersion
{
get { return this._globalTableVersion; }
set { this._globalTableVersion = value; }
}
// Check to see if GlobalTableVersion property is set
internal bool IsSetGlobalTableVersion()
{
return this._globalTableVersion != null;
}
///
/// Gets and sets the property ItemCount.
///
/// The number of items in the specified table. DynamoDB updates this value approximately
/// every six hours. Recent changes might not be reflected in this value.
///
///
public long ItemCount
{
get { return this._itemCount.GetValueOrDefault(); }
set { this._itemCount = value; }
}
// Check to see if ItemCount property is set
internal bool IsSetItemCount()
{
return this._itemCount.HasValue;
}
///
/// Gets and sets the property KeySchema.
///
/// The primary key structure for the table. Each KeySchemaElement
consists
/// of:
///
/// -
///
///
AttributeName
- The name of the attribute.
///
/// -
///
///
KeyType
- The role of the attribute:
///
/// -
///
///
HASH
- partition key
///
/// -
///
///
RANGE
- sort key
///
///
///
/// The partition key of an item is also known as its hash attribute. The term
/// "hash attribute" derives from DynamoDB's usage of an internal hash function to evenly
/// distribute data items across partitions, based on their partition key values.
///
///
///
/// The sort key of an item is also known as its range attribute. The term "range
/// attribute" derives from the way DynamoDB stores items with the same partition key
/// physically close together, in sorted order by the sort key value.
///
///
///
/// For more information about primary keys, see Primary
/// Key in the Amazon DynamoDB Developer Guide.
///
///
[AWSProperty(Min=1, Max=2)]
public List KeySchema
{
get { return this._keySchema; }
set { this._keySchema = value; }
}
// Check to see if KeySchema property is set
internal bool IsSetKeySchema()
{
return this._keySchema != null && this._keySchema.Count > 0;
}
///
/// Gets and sets the property LatestStreamArn.
///
/// The Amazon Resource Name (ARN) that uniquely identifies the latest stream for this
/// table.
///
///
[AWSProperty(Min=37, Max=1024)]
public string LatestStreamArn
{
get { return this._latestStreamArn; }
set { this._latestStreamArn = value; }
}
// Check to see if LatestStreamArn property is set
internal bool IsSetLatestStreamArn()
{
return this._latestStreamArn != null;
}
///
/// Gets and sets the property LatestStreamLabel.
///
/// A timestamp, in ISO 8601 format, for this stream.
///
///
///
/// Note that LatestStreamLabel
is not a unique identifier for the stream,
/// because it is possible that a stream from another table might have the same timestamp.
/// However, the combination of the following three elements is guaranteed to be unique:
///
/// -
///
/// AWS customer ID
///
///
-
///
/// Table name
///
///
-
///
///
StreamLabel
///
///
///
public string LatestStreamLabel
{
get { return this._latestStreamLabel; }
set { this._latestStreamLabel = value; }
}
// Check to see if LatestStreamLabel property is set
internal bool IsSetLatestStreamLabel()
{
return this._latestStreamLabel != null;
}
///
/// Gets and sets the property LocalSecondaryIndexes.
///
/// Represents one or more local secondary indexes on the table. Each index is scoped
/// to a given partition key value. Tables with one or more local secondary indexes are
/// subject to an item collection size limit, where the amount of data within a given
/// item collection cannot exceed 10 GB. Each element is composed of:
///
/// -
///
///
IndexName
- The name of the local secondary index.
///
/// -
///
///
KeySchema
- Specifies the complete index key schema. The attribute names
/// in the key schema must be between 1 and 255 characters (inclusive). The key schema
/// must begin with the same partition key as the table.
///
/// -
///
///
Projection
- Specifies attributes that are copied (projected) from the
/// table into the index. These are in addition to the primary key attributes and index
/// key attributes, which are automatically projected. Each attribute specification is
/// composed of:
///
/// -
///
///
ProjectionType
- One of the following:
///
/// -
///
///
KEYS_ONLY
- Only the index and primary keys are projected into the index.
///
/// -
///
///
INCLUDE
- Only the specified table attributes are projected into the
/// index. The list of projected attributes is in NonKeyAttributes
.
///
/// -
///
///
ALL
- All of the table attributes are projected into the index.
///
///
-
///
///
NonKeyAttributes
- A list of one or more non-key attribute names that
/// are projected into the secondary index. The total count of attributes provided in
/// NonKeyAttributes
, summed across all of the secondary indexes, must not
/// exceed 20. If you project the same attribute into two different indexes, this counts
/// as two distinct attributes when determining the total.
///
///
-
///
///
IndexSizeBytes
- Represents the total size of the index, in bytes. DynamoDB
/// updates this value approximately every six hours. Recent changes might not be reflected
/// in this value.
///
/// -
///
///
ItemCount
- Represents the number of items in the index. DynamoDB updates
/// this value approximately every six hours. Recent changes might not be reflected in
/// this value.
///
///
///
/// If the table is in the DELETING
state, no information about indexes will
/// be returned.
///
///
public List LocalSecondaryIndexes
{
get { return this._localSecondaryIndexes; }
set { this._localSecondaryIndexes = value; }
}
// Check to see if LocalSecondaryIndexes property is set
internal bool IsSetLocalSecondaryIndexes()
{
return this._localSecondaryIndexes != null && this._localSecondaryIndexes.Count > 0;
}
///
/// Gets and sets the property ProvisionedThroughput.
///
/// The provisioned throughput settings for the table, consisting of read and write capacity
/// units, along with data about increases and decreases.
///
///
public ProvisionedThroughputDescription 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 Replicas.
///
/// Represents replicas of the table.
///
///
public List Replicas
{
get { return this._replicas; }
set { this._replicas = value; }
}
// Check to see if Replicas property is set
internal bool IsSetReplicas()
{
return this._replicas != null && this._replicas.Count > 0;
}
///
/// Gets and sets the property RestoreSummary.
///
/// Contains details for the restore.
///
///
public RestoreSummary RestoreSummary
{
get { return this._restoreSummary; }
set { this._restoreSummary = value; }
}
// Check to see if RestoreSummary property is set
internal bool IsSetRestoreSummary()
{
return this._restoreSummary != null;
}
///
/// Gets and sets the property SSEDescription.
///
/// The description of the server-side encryption status on the specified table.
///
///
public SSEDescription SSEDescription
{
get { return this._sseDescription; }
set { this._sseDescription = value; }
}
// Check to see if SSEDescription property is set
internal bool IsSetSSEDescription()
{
return this._sseDescription != null;
}
///
/// Gets and sets the property StreamSpecification.
///
/// The current DynamoDB Streams configuration for the table.
///
///
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 TableArn.
///
/// The Amazon Resource Name (ARN) that uniquely identifies the table.
///
///
public string TableArn
{
get { return this._tableArn; }
set { this._tableArn = value; }
}
// Check to see if TableArn property is set
internal bool IsSetTableArn()
{
return this._tableArn != null;
}
///
/// Gets and sets the property TableId.
///
/// Unique identifier for the table for which the backup was created.
///
///
public string TableId
{
get { return this._tableId; }
set { this._tableId = value; }
}
// Check to see if TableId property is set
internal bool IsSetTableId()
{
return this._tableId != null;
}
///
/// Gets and sets the property TableName.
///
/// The name of the table.
///
///
[AWSProperty(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;
}
///
/// Gets and sets the property TableSizeBytes.
///
/// The total size of the specified table, in bytes. DynamoDB updates this value approximately
/// every six hours. Recent changes might not be reflected in this value.
///
///
public long TableSizeBytes
{
get { return this._tableSizeBytes.GetValueOrDefault(); }
set { this._tableSizeBytes = value; }
}
// Check to see if TableSizeBytes property is set
internal bool IsSetTableSizeBytes()
{
return this._tableSizeBytes.HasValue;
}
///
/// Gets and sets the property TableStatus.
///
/// The current state of the table:
///
/// -
///
///
CREATING
- The table is being created.
///
/// -
///
///
UPDATING
- The table is being updated.
///
/// -
///
///
DELETING
- The table is being deleted.
///
/// -
///
///
ACTIVE
- The table is ready for use.
///
/// -
///
///
INACCESSIBLE_ENCRYPTION_CREDENTIALS
- The AWS KMS key used to encrypt
/// the table in inaccessible. Table operations may fail due to failure to use the AWS
/// KMS key. DynamoDB will initiate the table archival process when a table's AWS KMS
/// key remains inaccessible for more than seven days.
///
/// -
///
///
ARCHIVING
- The table is being archived. Operations are not allowed
/// until archival is complete.
///
/// -
///
///
ARCHIVED
- The table has been archived. See the ArchivalReason for more
/// information.
///
///
///
public TableStatus TableStatus
{
get { return this._tableStatus; }
set { this._tableStatus = value; }
}
// Check to see if TableStatus property is set
internal bool IsSetTableStatus()
{
return this._tableStatus != null;
}
}
}