/* * 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 UpdateItem operation. /// Edits an existing item's attributes, or adds a new item to the table if it does not /// already exist. You can put, delete, or add attribute values. You can also perform /// a conditional update on an existing item (insert a new attribute name-value pair if /// it doesn't exist, or replace an existing name-value pair if it has certain expected /// attribute values). /// /// /// /// You can also return the item's attribute values in the same UpdateItem /// operation using the ReturnValues parameter. /// /// public partial class UpdateItemRequest : AmazonDynamoDBRequest { private Dictionary _attributeUpdates = new Dictionary(); private ConditionalOperator _conditionalOperator; private string _conditionExpression; private Dictionary _expected = new Dictionary(); private Dictionary _expressionAttributeNames = new Dictionary(); private Dictionary _expressionAttributeValues = new Dictionary(); private Dictionary _key = new Dictionary(); private ReturnConsumedCapacity _returnConsumedCapacity; private ReturnItemCollectionMetrics _returnItemCollectionMetrics; private ReturnValue _returnValues; private string _tableName; private string _updateExpression; /// /// Empty constructor used to set properties independently even when a simple constructor is available /// public UpdateItemRequest() { } /// /// Instantiates UpdateItemRequest with the parameterized properties /// /// The name of the table containing the item to update. /// The primary key of the item to be updated. Each element consists of an attribute name and a value for that attribute. For the primary key, you must provide all of the attributes. For example, with a simple primary key, you only need to provide a value for the partition key. For a composite primary key, you must provide values for both the partition key and the sort key. /// This is a legacy parameter. Use UpdateExpression instead. For more information, see AttributeUpdates in the Amazon DynamoDB Developer Guide. public UpdateItemRequest(string tableName, Dictionary key, Dictionary attributeUpdates) { _tableName = tableName; _key = key; _attributeUpdates = attributeUpdates; } /// /// Instantiates UpdateItemRequest with the parameterized properties /// /// The name of the table containing the item to update. /// The primary key of the item to be updated. Each element consists of an attribute name and a value for that attribute. For the primary key, you must provide all of the attributes. For example, with a simple primary key, you only need to provide a value for the partition key. For a composite primary key, you must provide values for both the partition key and the sort key. /// This is a legacy parameter. Use UpdateExpression instead. For more information, see AttributeUpdates in the Amazon DynamoDB Developer Guide. /// Use ReturnValues if you want to get the item attributes as they appear before or after they are updated. For UpdateItem, the valid values are:
  • NONE - If ReturnValues is not specified, or if its value is NONE, then nothing is returned. (This setting is the default for ReturnValues.)
  • ALL_OLD - Returns all of the attributes of the item, as they appeared before the UpdateItem operation.
  • UPDATED_OLD - Returns only the updated attributes, as they appeared before the UpdateItem operation.
  • ALL_NEW - Returns all of the attributes of the item, as they appear after the UpdateItem operation.
  • UPDATED_NEW - Returns only the updated attributes, as they appear after the UpdateItem operation.
There is no additional cost associated with requesting a return value aside from the small network and processing overhead of receiving a larger response. No read capacity units are consumed. The values returned are strongly consistent. public UpdateItemRequest(string tableName, Dictionary key, Dictionary attributeUpdates, ReturnValue returnValues) { _tableName = tableName; _key = key; _attributeUpdates = attributeUpdates; _returnValues = returnValues; } /// /// Gets and sets the property AttributeUpdates. /// /// This is a legacy parameter. Use UpdateExpression instead. For more information, /// see AttributeUpdates /// in the Amazon DynamoDB Developer Guide. /// /// public Dictionary AttributeUpdates { get { return this._attributeUpdates; } set { this._attributeUpdates = value; } } // Check to see if AttributeUpdates property is set internal bool IsSetAttributeUpdates() { return this._attributeUpdates != null && this._attributeUpdates.Count > 0; } /// /// Gets and sets the property ConditionalOperator. /// /// This is a legacy parameter. Use ConditionExpression instead. For more /// information, see ConditionalOperator /// in the Amazon DynamoDB Developer Guide. /// /// public ConditionalOperator ConditionalOperator { get { return this._conditionalOperator; } set { this._conditionalOperator = value; } } // Check to see if ConditionalOperator property is set internal bool IsSetConditionalOperator() { return this._conditionalOperator != null; } /// /// Gets and sets the property ConditionExpression. /// /// A condition that must be satisfied in order for a conditional update to succeed. /// /// /// /// An expression can contain any of the following: /// ///
  • /// /// Functions: attribute_exists | attribute_not_exists | attribute_type | contains /// | begins_with | size /// /// /// /// These function names are case-sensitive. /// ///
  • /// /// Comparison operators: = | <> | < | > | <= | >= | BETWEEN | /// IN /// ///
  • /// /// Logical operators: AND | OR | NOT /// ///
/// /// For more information about condition expressions, see Specifying /// Conditions in the Amazon DynamoDB Developer Guide. /// ///
public string ConditionExpression { get { return this._conditionExpression; } set { this._conditionExpression = value; } } // Check to see if ConditionExpression property is set internal bool IsSetConditionExpression() { return this._conditionExpression != null; } /// /// Gets and sets the property Expected. /// /// This is a legacy parameter. Use ConditionExpression instead. For more /// information, see Expected /// in the Amazon DynamoDB Developer Guide. /// /// public Dictionary Expected { get { return this._expected; } set { this._expected = value; } } // Check to see if Expected property is set internal bool IsSetExpected() { return this._expected != null && this._expected.Count > 0; } /// /// Gets and sets the property ExpressionAttributeNames. /// /// One or more substitution tokens for attribute names in an expression. The following /// are some use cases for using ExpressionAttributeNames: /// ///
  • /// /// To access an attribute whose name conflicts with a DynamoDB reserved word. /// ///
  • /// /// To create a placeholder for repeating occurrences of an attribute name in an expression. /// ///
  • /// /// To prevent special characters in an attribute name from being misinterpreted in an /// expression. /// ///
/// /// Use the # character in an expression to dereference an attribute name. For /// example, consider the following attribute name: /// ///
  • /// /// Percentile /// ///
/// /// The name of this attribute conflicts with a reserved word, so it cannot be used directly /// in an expression. (For the complete list of reserved words, see Reserved /// Words in the Amazon DynamoDB Developer Guide.) To work around this, you /// could specify the following for ExpressionAttributeNames: /// ///
  • /// /// {"#P":"Percentile"} /// ///
/// /// You could then use this substitution in an expression, as in this example: /// ///
  • /// /// #P = :val /// ///
/// /// Tokens that begin with the : character are expression attribute values, /// which are placeholders for the actual value at runtime. /// /// /// /// For more information about expression attribute names, see Specifying /// Item Attributes in the Amazon DynamoDB Developer Guide. /// ///
public Dictionary ExpressionAttributeNames { get { return this._expressionAttributeNames; } set { this._expressionAttributeNames = value; } } // Check to see if ExpressionAttributeNames property is set internal bool IsSetExpressionAttributeNames() { return this._expressionAttributeNames != null && this._expressionAttributeNames.Count > 0; } /// /// Gets and sets the property ExpressionAttributeValues. /// /// One or more values that can be substituted in an expression. /// /// /// /// Use the : (colon) character in an expression to dereference an attribute value. /// For example, suppose that you wanted to check whether the value of the ProductStatus /// attribute was one of the following: /// /// /// /// Available | Backordered | Discontinued /// /// /// /// You would first need to specify ExpressionAttributeValues as follows: /// /// /// /// { ":avail":{"S":"Available"}, ":back":{"S":"Backordered"}, ":disc":{"S":"Discontinued"} /// } /// /// /// /// You could then use these values in an expression, such as this: /// /// /// /// ProductStatus IN (:avail, :back, :disc) /// /// /// /// For more information on expression attribute values, see Condition /// Expressions in the Amazon DynamoDB Developer Guide. /// /// public Dictionary ExpressionAttributeValues { get { return this._expressionAttributeValues; } set { this._expressionAttributeValues = value; } } // Check to see if ExpressionAttributeValues property is set internal bool IsSetExpressionAttributeValues() { return this._expressionAttributeValues != null && this._expressionAttributeValues.Count > 0; } /// /// Gets and sets the property Key. /// /// The primary key of the item to be updated. Each element consists of an attribute name /// and a value for that attribute. /// /// /// /// For the primary key, you must provide all of the attributes. For example, with a simple /// primary key, you only need to provide a value for the partition key. For a composite /// primary key, you must provide values for both the partition key and the sort key. /// /// [AWSProperty(Required=true)] public Dictionary Key { get { return this._key; } set { this._key = value; } } // Check to see if Key property is set internal bool IsSetKey() { return this._key != null && this._key.Count > 0; } /// /// Gets and sets the property ReturnConsumedCapacity. /// public ReturnConsumedCapacity ReturnConsumedCapacity { get { return this._returnConsumedCapacity; } set { this._returnConsumedCapacity = value; } } // Check to see if ReturnConsumedCapacity property is set internal bool IsSetReturnConsumedCapacity() { return this._returnConsumedCapacity != null; } /// /// Gets and sets the property ReturnItemCollectionMetrics. /// /// Determines whether item collection metrics are returned. If set to SIZE, /// the response includes statistics about item collections, if any, that were modified /// during the operation are returned in the response. If set to NONE (the /// default), no statistics are returned. /// /// public ReturnItemCollectionMetrics ReturnItemCollectionMetrics { get { return this._returnItemCollectionMetrics; } set { this._returnItemCollectionMetrics = value; } } // Check to see if ReturnItemCollectionMetrics property is set internal bool IsSetReturnItemCollectionMetrics() { return this._returnItemCollectionMetrics != null; } /// /// Gets and sets the property ReturnValues. /// /// Use ReturnValues if you want to get the item attributes as they appear /// before or after they are updated. For UpdateItem, the valid values are: /// ///
  • /// /// NONE - If ReturnValues is not specified, or if its value /// is NONE, then nothing is returned. (This setting is the default for ReturnValues.) /// ///
  • /// /// ALL_OLD - Returns all of the attributes of the item, as they appeared /// before the UpdateItem operation. /// ///
  • /// /// UPDATED_OLD - Returns only the updated attributes, as they appeared /// before the UpdateItem operation. /// ///
  • /// /// ALL_NEW - Returns all of the attributes of the item, as they appear /// after the UpdateItem operation. /// ///
  • /// /// UPDATED_NEW - Returns only the updated attributes, as they appear after /// the UpdateItem operation. /// ///
/// /// There is no additional cost associated with requesting a return value aside from the /// small network and processing overhead of receiving a larger response. No read capacity /// units are consumed. /// /// /// /// The values returned are strongly consistent. /// ///
public ReturnValue ReturnValues { get { return this._returnValues; } set { this._returnValues = value; } } // Check to see if ReturnValues property is set internal bool IsSetReturnValues() { return this._returnValues != null; } /// /// Gets and sets the property TableName. /// /// The name of the table containing the item to update. /// /// [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; } /// /// Gets and sets the property UpdateExpression. /// /// An expression that defines one or more attributes to be updated, the action to be /// performed on them, and new values for them. /// /// /// /// The following action values are available for UpdateExpression. /// ///
  • /// /// SET - Adds one or more attributes and values to an item. If any of these /// attributes already exist, they are replaced by the new values. You can also use SET /// to add or subtract from an attribute that is of type Number. For example: SET /// myNum = myNum + :val /// /// /// /// SET supports the following functions: /// ///
    • /// /// if_not_exists (path, operand) - if the item does not contain an attribute /// at the specified path, then if_not_exists evaluates to operand; otherwise, /// it evaluates to path. You can use this function to avoid overwriting an attribute /// that may already be present in the item. /// ///
    • /// /// list_append (operand, operand) - evaluates to a list with a new element /// added to it. You can append the new element to the start or the end of the list by /// reversing the order of the operands. /// ///
    /// /// These function names are case-sensitive. /// ///
  • /// /// REMOVE - Removes one or more attributes from an item. /// ///
  • /// /// ADD - Adds the specified value to the item, if the attribute does not /// already exist. 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 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. /// /// /// /// Similarly, if you use ADD for an existing item to increment or decrement /// an attribute value that doesn't exist before the update, DynamoDB uses 0 /// as the initial value. For example, suppose that the item you want to update doesn't /// have an attribute named itemcount, but you decide to ADD /// the number 3 to this attribute anyway. 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 Value is also a set, then Value /// is added to the existing set. For example, if the attribute value is the set [1,2], /// and the ADD action specified [3], then the final attribute /// value is [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 ADD action only supports Number and set data types. In addition, /// ADD can only be used on top-level attributes, not nested attributes. /// ///
  • /// /// DELETE - Deletes an element from a set. /// /// /// /// 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 specifies [a,c], then the final attribute value is [b]. /// Specifying an empty set is an error. /// /// /// /// The DELETE action only supports set data types. In addition, DELETE /// can only be used on top-level attributes, not nested attributes. /// ///
/// /// You can have many actions in a single expression, such as the following: SET /// a=:value1, b=:value2 DELETE :value3, :value4, :value5 /// /// /// /// For more information on update expressions, see Modifying /// Items and Attributes in the Amazon DynamoDB Developer Guide. /// ///
public string UpdateExpression { get { return this._updateExpression; } set { this._updateExpression = value; } } // Check to see if UpdateExpression property is set internal bool IsSetUpdateExpression() { return this._updateExpression != null; } } }