/** * 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 hash type primary key would be represented by * one KeySchemaElement. A hash-and-range type primary key would require one * KeySchemaElement for the hash attribute, and another * KeySchemaElement for the range attribute.

*/ class AWS_DYNAMODBSTREAMS_API KeySchemaElement { public: KeySchemaElement(); KeySchemaElement(Aws::Utils::Json::JsonView jsonValue); KeySchemaElement& operator=(Aws::Utils::Json::JsonView jsonValue); 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 attribute data, consisting of the data type and the attribute value * itself.

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

The attribute data, consisting of the data type and the attribute value * itself.

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

The attribute data, consisting of the data type and the attribute value * itself.

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

The attribute data, consisting of the data type and the attribute value * itself.

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

The attribute data, consisting of the data type and the attribute value * itself.

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

The attribute data, consisting of the data type and the attribute value * itself.

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