/** * 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 DynamoDB { namespace Model { /** *

For the UpdateItem operation, represents the attributes to be * modified, the action to perform on each, and the new value for each.

*

You cannot use UpdateItem to update any primary key attributes. * Instead, you will need to delete the item, and then use PutItem to * create a new item with new attributes.

Attribute values cannot be * null; string and binary type attributes must have lengths greater than zero; and * set type attributes must not be empty. Requests with empty values will be * rejected with a ValidationException exception.

See * Also:

AWS * API Reference

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

Represents the data for an attribute.

Each attribute value is * described as a name-value pair. The name is the data type, and the value is the * data itself.

For more information, see Data * Types in the Amazon DynamoDB Developer Guide.

*/ inline const AttributeValue& GetValue() const{ return m_value; } /** *

Represents the data for an attribute.

Each attribute value is * described as a name-value pair. The name is the data type, and the value is the * data itself.

For more information, see Data * Types in the Amazon DynamoDB Developer Guide.

*/ inline bool ValueHasBeenSet() const { return m_valueHasBeenSet; } /** *

Represents the data for an attribute.

Each attribute value is * described as a name-value pair. The name is the data type, and the value is the * data itself.

For more information, see Data * Types in the Amazon DynamoDB Developer Guide.

*/ inline void SetValue(const AttributeValue& value) { m_valueHasBeenSet = true; m_value = value; } /** *

Represents the data for an attribute.

Each attribute value is * described as a name-value pair. The name is the data type, and the value is the * data itself.

For more information, see Data * Types in the Amazon DynamoDB Developer Guide.

*/ inline void SetValue(AttributeValue&& value) { m_valueHasBeenSet = true; m_value = std::move(value); } /** *

Represents the data for an attribute.

Each attribute value is * described as a name-value pair. The name is the data type, and the value is the * data itself.

For more information, see Data * Types in the Amazon DynamoDB Developer Guide.

*/ inline AttributeValueUpdate& WithValue(const AttributeValue& value) { SetValue(value); return *this;} /** *

Represents the data for an attribute.

Each attribute value is * described as a name-value pair. The name is the data type, and the value is the * data itself.

For more information, see Data * Types in the Amazon DynamoDB Developer Guide.

*/ inline AttributeValueUpdate& WithValue(AttributeValue&& value) { SetValue(std::move(value)); return *this;} /** *

Specifies how to perform the update. Valid values are PUT * (default), DELETE, and ADD. The behavior depends on * whether the specified primary key already exists in the table.

If an * item with the specified Key is found in the table:

  • * PUT - Adds the specified attribute to the item. If the attribute * already exists, it is replaced by the new value.

  • * DELETE - If no value is specified, the attribute and its value are * removed from the item. The data type of the specified value must match the * existing value's data type.

    If a set of values is specified, then * those values are subtracted from the old set. For example, if the attribute * value was the set [a,b,c] and the DELETE action * specified [a,c], then the final attribute value would be * [b]. Specifying an empty set is an error.

  • * ADD - If the attribute does not already exist, then the attribute * and its values are added to the item. If the attribute does exist, then the * behavior of ADD depends on the data type of the attribute:

      *
    • If the existing attribute is a number, and if Value is also * a number, then the Value is mathematically added to the existing * attribute. If Value is a negative number, then it is subtracted * from the existing attribute.

      If you use ADD to * increment or decrement a number value for an item that doesn't exist before the * update, DynamoDB uses 0 as the initial value.

      In addition, if you use * ADD to update an existing item, and intend to increment or * decrement an attribute value which does not yet exist, DynamoDB uses * 0 as the initial value. For example, suppose that the item you want * to update does not yet have an attribute named itemcount, but you decide * to ADD the number 3 to this attribute anyway, even * though it currently does not exist. DynamoDB will create the itemcount * attribute, set its initial value to 0, and finally add * 3 to it. The result will be a new itemcount attribute in the * item, with a value of 3.

    • If the existing * data type is a set, and if the Value is also a set, then the * Value is added to the existing set. (This is a set * operation, not mathematical addition.) For example, if the attribute value was * the set [1,2], and the ADD action specified * [3], then the final attribute value would be [1,2,3]. * An error occurs if an Add action is specified for a set attribute and the * attribute type specified does not match the existing set type.

      Both sets * must have the same primitive data type. For example, if the existing data type * is a set of strings, the Value must also be a set of strings. The * same holds true for number sets and binary sets.

    This action * is only valid for an existing attribute whose data type is number or is a set. * Do not use ADD for any other data types.

If * no item with the specified Key is found:

  • * PUT - DynamoDB creates a new item with the specified primary key, * and then adds the attribute.

  • DELETE - Nothing * happens; there is no attribute to delete.

  • ADD - * DynamoDB creates a new item with the supplied primary key and number (or set) * for the attribute value. The only data types allowed are number, number set, * string set or binary set.

*/ inline const AttributeAction& GetAction() const{ return m_action; } /** *

Specifies how to perform the update. Valid values are PUT * (default), DELETE, and ADD. The behavior depends on * whether the specified primary key already exists in the table.

If an * item with the specified Key is found in the table:

  • * PUT - Adds the specified attribute to the item. If the attribute * already exists, it is replaced by the new value.

  • * DELETE - If no value is specified, the attribute and its value are * removed from the item. The data type of the specified value must match the * existing value's data type.

    If a set of values is specified, then * those values are subtracted from the old set. For example, if the attribute * value was the set [a,b,c] and the DELETE action * specified [a,c], then the final attribute value would be * [b]. Specifying an empty set is an error.

  • * ADD - If the attribute does not already exist, then the attribute * and its values are added to the item. If the attribute does exist, then the * behavior of ADD depends on the data type of the attribute:

      *
    • If the existing attribute is a number, and if Value is also * a number, then the Value is mathematically added to the existing * attribute. If Value is a negative number, then it is subtracted * from the existing attribute.

      If you use ADD to * increment or decrement a number value for an item that doesn't exist before the * update, DynamoDB uses 0 as the initial value.

      In addition, if you use * ADD to update an existing item, and intend to increment or * decrement an attribute value which does not yet exist, DynamoDB uses * 0 as the initial value. For example, suppose that the item you want * to update does not yet have an attribute named itemcount, but you decide * to ADD the number 3 to this attribute anyway, even * though it currently does not exist. DynamoDB will create the itemcount * attribute, set its initial value to 0, and finally add * 3 to it. The result will be a new itemcount attribute in the * item, with a value of 3.

    • If the existing * data type is a set, and if the Value is also a set, then the * Value is added to the existing set. (This is a set * operation, not mathematical addition.) For example, if the attribute value was * the set [1,2], and the ADD action specified * [3], then the final attribute value would be [1,2,3]. * An error occurs if an Add action is specified for a set attribute and the * attribute type specified does not match the existing set type.

      Both sets * must have the same primitive data type. For example, if the existing data type * is a set of strings, the Value must also be a set of strings. The * same holds true for number sets and binary sets.

    This action * is only valid for an existing attribute whose data type is number or is a set. * Do not use ADD for any other data types.

If * no item with the specified Key is found:

  • * PUT - DynamoDB creates a new item with the specified primary key, * and then adds the attribute.

  • DELETE - Nothing * happens; there is no attribute to delete.

  • ADD - * DynamoDB creates a new item with the supplied primary key and number (or set) * for the attribute value. The only data types allowed are number, number set, * string set or binary set.

*/ inline bool ActionHasBeenSet() const { return m_actionHasBeenSet; } /** *

Specifies how to perform the update. Valid values are PUT * (default), DELETE, and ADD. The behavior depends on * whether the specified primary key already exists in the table.

If an * item with the specified Key is found in the table:

  • * PUT - Adds the specified attribute to the item. If the attribute * already exists, it is replaced by the new value.

  • * DELETE - If no value is specified, the attribute and its value are * removed from the item. The data type of the specified value must match the * existing value's data type.

    If a set of values is specified, then * those values are subtracted from the old set. For example, if the attribute * value was the set [a,b,c] and the DELETE action * specified [a,c], then the final attribute value would be * [b]. Specifying an empty set is an error.

  • * ADD - If the attribute does not already exist, then the attribute * and its values are added to the item. If the attribute does exist, then the * behavior of ADD depends on the data type of the attribute:

      *
    • If the existing attribute is a number, and if Value is also * a number, then the Value is mathematically added to the existing * attribute. If Value is a negative number, then it is subtracted * from the existing attribute.

      If you use ADD to * increment or decrement a number value for an item that doesn't exist before the * update, DynamoDB uses 0 as the initial value.

      In addition, if you use * ADD to update an existing item, and intend to increment or * decrement an attribute value which does not yet exist, DynamoDB uses * 0 as the initial value. For example, suppose that the item you want * to update does not yet have an attribute named itemcount, but you decide * to ADD the number 3 to this attribute anyway, even * though it currently does not exist. DynamoDB will create the itemcount * attribute, set its initial value to 0, and finally add * 3 to it. The result will be a new itemcount attribute in the * item, with a value of 3.

    • If the existing * data type is a set, and if the Value is also a set, then the * Value is added to the existing set. (This is a set * operation, not mathematical addition.) For example, if the attribute value was * the set [1,2], and the ADD action specified * [3], then the final attribute value would be [1,2,3]. * An error occurs if an Add action is specified for a set attribute and the * attribute type specified does not match the existing set type.

      Both sets * must have the same primitive data type. For example, if the existing data type * is a set of strings, the Value must also be a set of strings. The * same holds true for number sets and binary sets.

    This action * is only valid for an existing attribute whose data type is number or is a set. * Do not use ADD for any other data types.

If * no item with the specified Key is found:

  • * PUT - DynamoDB creates a new item with the specified primary key, * and then adds the attribute.

  • DELETE - Nothing * happens; there is no attribute to delete.

  • ADD - * DynamoDB creates a new item with the supplied primary key and number (or set) * for the attribute value. The only data types allowed are number, number set, * string set or binary set.

*/ inline void SetAction(const AttributeAction& value) { m_actionHasBeenSet = true; m_action = value; } /** *

Specifies how to perform the update. Valid values are PUT * (default), DELETE, and ADD. The behavior depends on * whether the specified primary key already exists in the table.

If an * item with the specified Key is found in the table:

  • * PUT - Adds the specified attribute to the item. If the attribute * already exists, it is replaced by the new value.

  • * DELETE - If no value is specified, the attribute and its value are * removed from the item. The data type of the specified value must match the * existing value's data type.

    If a set of values is specified, then * those values are subtracted from the old set. For example, if the attribute * value was the set [a,b,c] and the DELETE action * specified [a,c], then the final attribute value would be * [b]. Specifying an empty set is an error.

  • * ADD - If the attribute does not already exist, then the attribute * and its values are added to the item. If the attribute does exist, then the * behavior of ADD depends on the data type of the attribute:

      *
    • If the existing attribute is a number, and if Value is also * a number, then the Value is mathematically added to the existing * attribute. If Value is a negative number, then it is subtracted * from the existing attribute.

      If you use ADD to * increment or decrement a number value for an item that doesn't exist before the * update, DynamoDB uses 0 as the initial value.

      In addition, if you use * ADD to update an existing item, and intend to increment or * decrement an attribute value which does not yet exist, DynamoDB uses * 0 as the initial value. For example, suppose that the item you want * to update does not yet have an attribute named itemcount, but you decide * to ADD the number 3 to this attribute anyway, even * though it currently does not exist. DynamoDB will create the itemcount * attribute, set its initial value to 0, and finally add * 3 to it. The result will be a new itemcount attribute in the * item, with a value of 3.

    • If the existing * data type is a set, and if the Value is also a set, then the * Value is added to the existing set. (This is a set * operation, not mathematical addition.) For example, if the attribute value was * the set [1,2], and the ADD action specified * [3], then the final attribute value would be [1,2,3]. * An error occurs if an Add action is specified for a set attribute and the * attribute type specified does not match the existing set type.

      Both sets * must have the same primitive data type. For example, if the existing data type * is a set of strings, the Value must also be a set of strings. The * same holds true for number sets and binary sets.

    This action * is only valid for an existing attribute whose data type is number or is a set. * Do not use ADD for any other data types.

If * no item with the specified Key is found:

  • * PUT - DynamoDB creates a new item with the specified primary key, * and then adds the attribute.

  • DELETE - Nothing * happens; there is no attribute to delete.

  • ADD - * DynamoDB creates a new item with the supplied primary key and number (or set) * for the attribute value. The only data types allowed are number, number set, * string set or binary set.

*/ inline void SetAction(AttributeAction&& value) { m_actionHasBeenSet = true; m_action = std::move(value); } /** *

Specifies how to perform the update. Valid values are PUT * (default), DELETE, and ADD. The behavior depends on * whether the specified primary key already exists in the table.

If an * item with the specified Key is found in the table:

  • * PUT - Adds the specified attribute to the item. If the attribute * already exists, it is replaced by the new value.

  • * DELETE - If no value is specified, the attribute and its value are * removed from the item. The data type of the specified value must match the * existing value's data type.

    If a set of values is specified, then * those values are subtracted from the old set. For example, if the attribute * value was the set [a,b,c] and the DELETE action * specified [a,c], then the final attribute value would be * [b]. Specifying an empty set is an error.

  • * ADD - If the attribute does not already exist, then the attribute * and its values are added to the item. If the attribute does exist, then the * behavior of ADD depends on the data type of the attribute:

      *
    • If the existing attribute is a number, and if Value is also * a number, then the Value is mathematically added to the existing * attribute. If Value is a negative number, then it is subtracted * from the existing attribute.

      If you use ADD to * increment or decrement a number value for an item that doesn't exist before the * update, DynamoDB uses 0 as the initial value.

      In addition, if you use * ADD to update an existing item, and intend to increment or * decrement an attribute value which does not yet exist, DynamoDB uses * 0 as the initial value. For example, suppose that the item you want * to update does not yet have an attribute named itemcount, but you decide * to ADD the number 3 to this attribute anyway, even * though it currently does not exist. DynamoDB will create the itemcount * attribute, set its initial value to 0, and finally add * 3 to it. The result will be a new itemcount attribute in the * item, with a value of 3.

    • If the existing * data type is a set, and if the Value is also a set, then the * Value is added to the existing set. (This is a set * operation, not mathematical addition.) For example, if the attribute value was * the set [1,2], and the ADD action specified * [3], then the final attribute value would be [1,2,3]. * An error occurs if an Add action is specified for a set attribute and the * attribute type specified does not match the existing set type.

      Both sets * must have the same primitive data type. For example, if the existing data type * is a set of strings, the Value must also be a set of strings. The * same holds true for number sets and binary sets.

    This action * is only valid for an existing attribute whose data type is number or is a set. * Do not use ADD for any other data types.

If * no item with the specified Key is found:

  • * PUT - DynamoDB creates a new item with the specified primary key, * and then adds the attribute.

  • DELETE - Nothing * happens; there is no attribute to delete.

  • ADD - * DynamoDB creates a new item with the supplied primary key and number (or set) * for the attribute value. The only data types allowed are number, number set, * string set or binary set.

*/ inline AttributeValueUpdate& WithAction(const AttributeAction& value) { SetAction(value); return *this;} /** *

Specifies how to perform the update. Valid values are PUT * (default), DELETE, and ADD. The behavior depends on * whether the specified primary key already exists in the table.

If an * item with the specified Key is found in the table:

  • * PUT - Adds the specified attribute to the item. If the attribute * already exists, it is replaced by the new value.

  • * DELETE - If no value is specified, the attribute and its value are * removed from the item. The data type of the specified value must match the * existing value's data type.

    If a set of values is specified, then * those values are subtracted from the old set. For example, if the attribute * value was the set [a,b,c] and the DELETE action * specified [a,c], then the final attribute value would be * [b]. Specifying an empty set is an error.

  • * ADD - If the attribute does not already exist, then the attribute * and its values are added to the item. If the attribute does exist, then the * behavior of ADD depends on the data type of the attribute:

      *
    • If the existing attribute is a number, and if Value is also * a number, then the Value is mathematically added to the existing * attribute. If Value is a negative number, then it is subtracted * from the existing attribute.

      If you use ADD to * increment or decrement a number value for an item that doesn't exist before the * update, DynamoDB uses 0 as the initial value.

      In addition, if you use * ADD to update an existing item, and intend to increment or * decrement an attribute value which does not yet exist, DynamoDB uses * 0 as the initial value. For example, suppose that the item you want * to update does not yet have an attribute named itemcount, but you decide * to ADD the number 3 to this attribute anyway, even * though it currently does not exist. DynamoDB will create the itemcount * attribute, set its initial value to 0, and finally add * 3 to it. The result will be a new itemcount attribute in the * item, with a value of 3.

    • If the existing * data type is a set, and if the Value is also a set, then the * Value is added to the existing set. (This is a set * operation, not mathematical addition.) For example, if the attribute value was * the set [1,2], and the ADD action specified * [3], then the final attribute value would be [1,2,3]. * An error occurs if an Add action is specified for a set attribute and the * attribute type specified does not match the existing set type.

      Both sets * must have the same primitive data type. For example, if the existing data type * is a set of strings, the Value must also be a set of strings. The * same holds true for number sets and binary sets.

    This action * is only valid for an existing attribute whose data type is number or is a set. * Do not use ADD for any other data types.

If * no item with the specified Key is found:

  • * PUT - DynamoDB creates a new item with the specified primary key, * and then adds the attribute.

  • DELETE - Nothing * happens; there is no attribute to delete.

  • ADD - * DynamoDB creates a new item with the supplied primary key and number (or set) * for the attribute value. The only data types allowed are number, number set, * string set or binary set.

*/ inline AttributeValueUpdate& WithAction(AttributeAction&& value) { SetAction(std::move(value)); return *this;} private: AttributeValue m_value; bool m_valueHasBeenSet = false; AttributeAction m_action; bool m_actionHasBeenSet = false; }; } // namespace Model } // namespace DynamoDB } // namespace Aws