/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace DynamoDBStreams { namespace Model { /** *

Represents a single element of a key schema. A key schema specifies * the attributes that make up the primary key of a table, or the key attributes of * an index.

A KeySchemaElement represents exactly one * attribute of the primary key. For example, a simple primary key would be * represented by one KeySchemaElement (for the partition key). A * composite primary key would require one KeySchemaElement for the * partition key, and another KeySchemaElement for the sort key.

*

A KeySchemaElement must be a scalar, top-level attribute (not a * nested attribute). The data type must be one of String, Number, or Binary. The * attribute cannot be nested within a List or a Map.

See Also:

AWS * API Reference

*/ class KeySchemaElement { public: AWS_DYNAMODBSTREAMS_API KeySchemaElement(); AWS_DYNAMODBSTREAMS_API KeySchemaElement(Aws::Utils::Json::JsonView jsonValue); AWS_DYNAMODBSTREAMS_API KeySchemaElement& operator=(Aws::Utils::Json::JsonView jsonValue); AWS_DYNAMODBSTREAMS_API Aws::Utils::Json::JsonValue Jsonize() const; /** *

The name of a key attribute.

*/ inline const Aws::String& GetAttributeName() const{ return m_attributeName; } /** *

The name of a key attribute.

*/ inline bool AttributeNameHasBeenSet() const { return m_attributeNameHasBeenSet; } /** *

The name of a key attribute.

*/ inline void SetAttributeName(const Aws::String& value) { m_attributeNameHasBeenSet = true; m_attributeName = value; } /** *

The name of a key attribute.

*/ inline void SetAttributeName(Aws::String&& value) { m_attributeNameHasBeenSet = true; m_attributeName = std::move(value); } /** *

The name of a key attribute.

*/ inline void SetAttributeName(const char* value) { m_attributeNameHasBeenSet = true; m_attributeName.assign(value); } /** *

The name of a key attribute.

*/ inline KeySchemaElement& WithAttributeName(const Aws::String& value) { SetAttributeName(value); return *this;} /** *

The name of a key attribute.

*/ inline KeySchemaElement& WithAttributeName(Aws::String&& value) { SetAttributeName(std::move(value)); return *this;} /** *

The name of a key attribute.

*/ inline KeySchemaElement& WithAttributeName(const char* value) { SetAttributeName(value); return *this;} /** *

The role that this key attribute will assume:

  • * 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.

*/ inline const KeyType& GetKeyType() const{ return m_keyType; } /** *

The role that this key attribute will assume:

  • * 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.

*/ inline bool KeyTypeHasBeenSet() const { return m_keyTypeHasBeenSet; } /** *

The role that this key attribute will assume:

  • * 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.

*/ inline void SetKeyType(const KeyType& value) { m_keyTypeHasBeenSet = true; m_keyType = value; } /** *

The role that this key attribute will assume:

  • * 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.

*/ inline void SetKeyType(KeyType&& value) { m_keyTypeHasBeenSet = true; m_keyType = std::move(value); } /** *

The role that this key attribute will assume:

  • * 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.

*/ inline KeySchemaElement& WithKeyType(const KeyType& value) { SetKeyType(value); return *this;} /** *

The role that this key attribute will assume:

  • * 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.

*/ inline KeySchemaElement& WithKeyType(KeyType&& value) { SetKeyType(std::move(value)); return *this;} private: Aws::String m_attributeName; bool m_attributeNameHasBeenSet = false; KeyType m_keyType; bool m_keyTypeHasBeenSet = false; }; } // namespace Model } // namespace DynamoDBStreams } // namespace Aws