/*
* 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;
}
}
}