1 /** 2 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. 3 * SPDX-License-Identifier: Apache-2.0. 4 */ 5 6 #pragma once 7 #include <aws/dynamodb/DynamoDB_EXPORTS.h> 8 #include <aws/core/utils/memory/stl/AWSVector.h> 9 #include <aws/core/utils/memory/stl/AWSString.h> 10 #include <aws/core/utils/memory/stl/AWSMap.h> 11 #include <aws/dynamodb/model/AttributeValue.h> 12 #include <utility> 13 14 namespace Aws 15 { 16 namespace Utils 17 { 18 namespace Json 19 { 20 class JsonValue; 21 class JsonView; 22 } // namespace Json 23 } // namespace Utils 24 namespace DynamoDB 25 { 26 namespace Model 27 { 28 29 /** 30 * <p>Represents a set of primary keys and, for each key, the attributes to 31 * retrieve from the table.</p> <p>For each primary key, you must provide 32 * <i>all</i> of the key attributes. For example, with a simple primary key, you 33 * only need to provide the partition key. For a composite primary key, you must 34 * provide <i>both</i> the partition key and the sort key.</p><p><h3>See Also:</h3> 35 * <a 36 * href="http://docs.aws.amazon.com/goto/WebAPI/dynamodb-2012-08-10/KeysAndAttributes">AWS 37 * API Reference</a></p> 38 */ 39 class AWS_DYNAMODB_API KeysAndAttributes 40 { 41 public: 42 KeysAndAttributes(); 43 KeysAndAttributes(Aws::Utils::Json::JsonView jsonValue); 44 KeysAndAttributes& operator=(Aws::Utils::Json::JsonView jsonValue); 45 Aws::Utils::Json::JsonValue Jsonize() const; 46 47 48 /** 49 * <p>The primary key attribute values that define the items and the attributes 50 * associated with the items.</p> 51 */ GetKeys()52 inline const Aws::Vector<Aws::Map<Aws::String, AttributeValue>>& GetKeys() const{ return m_keys; } 53 54 /** 55 * <p>The primary key attribute values that define the items and the attributes 56 * associated with the items.</p> 57 */ KeysHasBeenSet()58 inline bool KeysHasBeenSet() const { return m_keysHasBeenSet; } 59 60 /** 61 * <p>The primary key attribute values that define the items and the attributes 62 * associated with the items.</p> 63 */ SetKeys(const Aws::Vector<Aws::Map<Aws::String,AttributeValue>> & value)64 inline void SetKeys(const Aws::Vector<Aws::Map<Aws::String, AttributeValue>>& value) { m_keysHasBeenSet = true; m_keys = value; } 65 66 /** 67 * <p>The primary key attribute values that define the items and the attributes 68 * associated with the items.</p> 69 */ SetKeys(Aws::Vector<Aws::Map<Aws::String,AttributeValue>> && value)70 inline void SetKeys(Aws::Vector<Aws::Map<Aws::String, AttributeValue>>&& value) { m_keysHasBeenSet = true; m_keys = std::move(value); } 71 72 /** 73 * <p>The primary key attribute values that define the items and the attributes 74 * associated with the items.</p> 75 */ WithKeys(const Aws::Vector<Aws::Map<Aws::String,AttributeValue>> & value)76 inline KeysAndAttributes& WithKeys(const Aws::Vector<Aws::Map<Aws::String, AttributeValue>>& value) { SetKeys(value); return *this;} 77 78 /** 79 * <p>The primary key attribute values that define the items and the attributes 80 * associated with the items.</p> 81 */ WithKeys(Aws::Vector<Aws::Map<Aws::String,AttributeValue>> && value)82 inline KeysAndAttributes& WithKeys(Aws::Vector<Aws::Map<Aws::String, AttributeValue>>&& value) { SetKeys(std::move(value)); return *this;} 83 84 /** 85 * <p>The primary key attribute values that define the items and the attributes 86 * associated with the items.</p> 87 */ AddKeys(const Aws::Map<Aws::String,AttributeValue> & value)88 inline KeysAndAttributes& AddKeys(const Aws::Map<Aws::String, AttributeValue>& value) { m_keysHasBeenSet = true; m_keys.push_back(value); return *this; } 89 90 /** 91 * <p>The primary key attribute values that define the items and the attributes 92 * associated with the items.</p> 93 */ AddKeys(Aws::Map<Aws::String,AttributeValue> && value)94 inline KeysAndAttributes& AddKeys(Aws::Map<Aws::String, AttributeValue>&& value) { m_keysHasBeenSet = true; m_keys.push_back(std::move(value)); return *this; } 95 96 97 /** 98 * <p>This is a legacy parameter. Use <code>ProjectionExpression</code> instead. 99 * For more information, see <a 100 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.html">Legacy 101 * Conditional Parameters</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> 102 */ GetAttributesToGet()103 inline const Aws::Vector<Aws::String>& GetAttributesToGet() const{ return m_attributesToGet; } 104 105 /** 106 * <p>This is a legacy parameter. Use <code>ProjectionExpression</code> instead. 107 * For more information, see <a 108 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.html">Legacy 109 * Conditional Parameters</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> 110 */ AttributesToGetHasBeenSet()111 inline bool AttributesToGetHasBeenSet() const { return m_attributesToGetHasBeenSet; } 112 113 /** 114 * <p>This is a legacy parameter. Use <code>ProjectionExpression</code> instead. 115 * For more information, see <a 116 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.html">Legacy 117 * Conditional Parameters</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> 118 */ SetAttributesToGet(const Aws::Vector<Aws::String> & value)119 inline void SetAttributesToGet(const Aws::Vector<Aws::String>& value) { m_attributesToGetHasBeenSet = true; m_attributesToGet = value; } 120 121 /** 122 * <p>This is a legacy parameter. Use <code>ProjectionExpression</code> instead. 123 * For more information, see <a 124 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.html">Legacy 125 * Conditional Parameters</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> 126 */ SetAttributesToGet(Aws::Vector<Aws::String> && value)127 inline void SetAttributesToGet(Aws::Vector<Aws::String>&& value) { m_attributesToGetHasBeenSet = true; m_attributesToGet = std::move(value); } 128 129 /** 130 * <p>This is a legacy parameter. Use <code>ProjectionExpression</code> instead. 131 * For more information, see <a 132 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.html">Legacy 133 * Conditional Parameters</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> 134 */ WithAttributesToGet(const Aws::Vector<Aws::String> & value)135 inline KeysAndAttributes& WithAttributesToGet(const Aws::Vector<Aws::String>& value) { SetAttributesToGet(value); return *this;} 136 137 /** 138 * <p>This is a legacy parameter. Use <code>ProjectionExpression</code> instead. 139 * For more information, see <a 140 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.html">Legacy 141 * Conditional Parameters</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> 142 */ WithAttributesToGet(Aws::Vector<Aws::String> && value)143 inline KeysAndAttributes& WithAttributesToGet(Aws::Vector<Aws::String>&& value) { SetAttributesToGet(std::move(value)); return *this;} 144 145 /** 146 * <p>This is a legacy parameter. Use <code>ProjectionExpression</code> instead. 147 * For more information, see <a 148 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.html">Legacy 149 * Conditional Parameters</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> 150 */ AddAttributesToGet(const Aws::String & value)151 inline KeysAndAttributes& AddAttributesToGet(const Aws::String& value) { m_attributesToGetHasBeenSet = true; m_attributesToGet.push_back(value); return *this; } 152 153 /** 154 * <p>This is a legacy parameter. Use <code>ProjectionExpression</code> instead. 155 * For more information, see <a 156 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.html">Legacy 157 * Conditional Parameters</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> 158 */ AddAttributesToGet(Aws::String && value)159 inline KeysAndAttributes& AddAttributesToGet(Aws::String&& value) { m_attributesToGetHasBeenSet = true; m_attributesToGet.push_back(std::move(value)); return *this; } 160 161 /** 162 * <p>This is a legacy parameter. Use <code>ProjectionExpression</code> instead. 163 * For more information, see <a 164 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/LegacyConditionalParameters.html">Legacy 165 * Conditional Parameters</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> 166 */ AddAttributesToGet(const char * value)167 inline KeysAndAttributes& AddAttributesToGet(const char* value) { m_attributesToGetHasBeenSet = true; m_attributesToGet.push_back(value); return *this; } 168 169 170 /** 171 * <p>The consistency of a read operation. If set to <code>true</code>, then a 172 * strongly consistent read is used; otherwise, an eventually consistent read is 173 * used.</p> 174 */ GetConsistentRead()175 inline bool GetConsistentRead() const{ return m_consistentRead; } 176 177 /** 178 * <p>The consistency of a read operation. If set to <code>true</code>, then a 179 * strongly consistent read is used; otherwise, an eventually consistent read is 180 * used.</p> 181 */ ConsistentReadHasBeenSet()182 inline bool ConsistentReadHasBeenSet() const { return m_consistentReadHasBeenSet; } 183 184 /** 185 * <p>The consistency of a read operation. If set to <code>true</code>, then a 186 * strongly consistent read is used; otherwise, an eventually consistent read is 187 * used.</p> 188 */ SetConsistentRead(bool value)189 inline void SetConsistentRead(bool value) { m_consistentReadHasBeenSet = true; m_consistentRead = value; } 190 191 /** 192 * <p>The consistency of a read operation. If set to <code>true</code>, then a 193 * strongly consistent read is used; otherwise, an eventually consistent read is 194 * used.</p> 195 */ WithConsistentRead(bool value)196 inline KeysAndAttributes& WithConsistentRead(bool value) { SetConsistentRead(value); return *this;} 197 198 199 /** 200 * <p>A string that identifies one or more attributes to retrieve from the table. 201 * These attributes can include scalars, sets, or elements of a JSON document. The 202 * attributes in the <code>ProjectionExpression</code> must be separated by 203 * commas.</p> <p>If no attribute names are specified, then all attributes will be 204 * returned. If any of the requested attributes are not found, they will not appear 205 * in the result.</p> <p>For more information, see <a 206 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html">Accessing 207 * Item Attributes</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> 208 */ GetProjectionExpression()209 inline const Aws::String& GetProjectionExpression() const{ return m_projectionExpression; } 210 211 /** 212 * <p>A string that identifies one or more attributes to retrieve from the table. 213 * These attributes can include scalars, sets, or elements of a JSON document. The 214 * attributes in the <code>ProjectionExpression</code> must be separated by 215 * commas.</p> <p>If no attribute names are specified, then all attributes will be 216 * returned. If any of the requested attributes are not found, they will not appear 217 * in the result.</p> <p>For more information, see <a 218 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html">Accessing 219 * Item Attributes</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> 220 */ ProjectionExpressionHasBeenSet()221 inline bool ProjectionExpressionHasBeenSet() const { return m_projectionExpressionHasBeenSet; } 222 223 /** 224 * <p>A string that identifies one or more attributes to retrieve from the table. 225 * These attributes can include scalars, sets, or elements of a JSON document. The 226 * attributes in the <code>ProjectionExpression</code> must be separated by 227 * commas.</p> <p>If no attribute names are specified, then all attributes will be 228 * returned. If any of the requested attributes are not found, they will not appear 229 * in the result.</p> <p>For more information, see <a 230 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html">Accessing 231 * Item Attributes</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> 232 */ SetProjectionExpression(const Aws::String & value)233 inline void SetProjectionExpression(const Aws::String& value) { m_projectionExpressionHasBeenSet = true; m_projectionExpression = value; } 234 235 /** 236 * <p>A string that identifies one or more attributes to retrieve from the table. 237 * These attributes can include scalars, sets, or elements of a JSON document. The 238 * attributes in the <code>ProjectionExpression</code> must be separated by 239 * commas.</p> <p>If no attribute names are specified, then all attributes will be 240 * returned. If any of the requested attributes are not found, they will not appear 241 * in the result.</p> <p>For more information, see <a 242 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html">Accessing 243 * Item Attributes</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> 244 */ SetProjectionExpression(Aws::String && value)245 inline void SetProjectionExpression(Aws::String&& value) { m_projectionExpressionHasBeenSet = true; m_projectionExpression = std::move(value); } 246 247 /** 248 * <p>A string that identifies one or more attributes to retrieve from the table. 249 * These attributes can include scalars, sets, or elements of a JSON document. The 250 * attributes in the <code>ProjectionExpression</code> must be separated by 251 * commas.</p> <p>If no attribute names are specified, then all attributes will be 252 * returned. If any of the requested attributes are not found, they will not appear 253 * in the result.</p> <p>For more information, see <a 254 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html">Accessing 255 * Item Attributes</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> 256 */ SetProjectionExpression(const char * value)257 inline void SetProjectionExpression(const char* value) { m_projectionExpressionHasBeenSet = true; m_projectionExpression.assign(value); } 258 259 /** 260 * <p>A string that identifies one or more attributes to retrieve from the table. 261 * These attributes can include scalars, sets, or elements of a JSON document. The 262 * attributes in the <code>ProjectionExpression</code> must be separated by 263 * commas.</p> <p>If no attribute names are specified, then all attributes will be 264 * returned. If any of the requested attributes are not found, they will not appear 265 * in the result.</p> <p>For more information, see <a 266 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html">Accessing 267 * Item Attributes</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> 268 */ WithProjectionExpression(const Aws::String & value)269 inline KeysAndAttributes& WithProjectionExpression(const Aws::String& value) { SetProjectionExpression(value); return *this;} 270 271 /** 272 * <p>A string that identifies one or more attributes to retrieve from the table. 273 * These attributes can include scalars, sets, or elements of a JSON document. The 274 * attributes in the <code>ProjectionExpression</code> must be separated by 275 * commas.</p> <p>If no attribute names are specified, then all attributes will be 276 * returned. If any of the requested attributes are not found, they will not appear 277 * in the result.</p> <p>For more information, see <a 278 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html">Accessing 279 * Item Attributes</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> 280 */ WithProjectionExpression(Aws::String && value)281 inline KeysAndAttributes& WithProjectionExpression(Aws::String&& value) { SetProjectionExpression(std::move(value)); return *this;} 282 283 /** 284 * <p>A string that identifies one or more attributes to retrieve from the table. 285 * These attributes can include scalars, sets, or elements of a JSON document. The 286 * attributes in the <code>ProjectionExpression</code> must be separated by 287 * commas.</p> <p>If no attribute names are specified, then all attributes will be 288 * returned. If any of the requested attributes are not found, they will not appear 289 * in the result.</p> <p>For more information, see <a 290 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html">Accessing 291 * Item Attributes</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> 292 */ WithProjectionExpression(const char * value)293 inline KeysAndAttributes& WithProjectionExpression(const char* value) { SetProjectionExpression(value); return *this;} 294 295 296 /** 297 * <p>One or more substitution tokens for attribute names in an expression. The 298 * following are some use cases for using 299 * <code>ExpressionAttributeNames</code>:</p> <ul> <li> <p>To access an attribute 300 * whose name conflicts with a DynamoDB reserved word.</p> </li> <li> <p>To create 301 * a placeholder for repeating occurrences of an attribute name in an 302 * expression.</p> </li> <li> <p>To prevent special characters in an attribute name 303 * from being misinterpreted in an expression.</p> </li> </ul> <p>Use the <b>#</b> 304 * character in an expression to dereference an attribute name. For example, 305 * consider the following attribute name:</p> <ul> <li> <p> <code>Percentile</code> 306 * </p> </li> </ul> <p>The name of this attribute conflicts with a reserved word, 307 * so it cannot be used directly in an expression. (For the complete list of 308 * reserved words, see <a 309 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html">Reserved 310 * Words</a> in the <i>Amazon DynamoDB Developer Guide</i>). To work around this, 311 * you could specify the following for <code>ExpressionAttributeNames</code>:</p> 312 * <ul> <li> <p> <code>{"#P":"Percentile"}</code> </p> </li> </ul> <p>You could 313 * then use this substitution in an expression, as in this example:</p> <ul> <li> 314 * <p> <code>#P = :val</code> </p> </li> </ul> <p>Tokens that begin with the 315 * <b>:</b> character are <i>expression attribute values</i>, which are 316 * placeholders for the actual value at runtime.</p> <p>For more 317 * information on expression attribute names, see <a 318 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html">Accessing 319 * Item Attributes</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> 320 */ GetExpressionAttributeNames()321 inline const Aws::Map<Aws::String, Aws::String>& GetExpressionAttributeNames() const{ return m_expressionAttributeNames; } 322 323 /** 324 * <p>One or more substitution tokens for attribute names in an expression. The 325 * following are some use cases for using 326 * <code>ExpressionAttributeNames</code>:</p> <ul> <li> <p>To access an attribute 327 * whose name conflicts with a DynamoDB reserved word.</p> </li> <li> <p>To create 328 * a placeholder for repeating occurrences of an attribute name in an 329 * expression.</p> </li> <li> <p>To prevent special characters in an attribute name 330 * from being misinterpreted in an expression.</p> </li> </ul> <p>Use the <b>#</b> 331 * character in an expression to dereference an attribute name. For example, 332 * consider the following attribute name:</p> <ul> <li> <p> <code>Percentile</code> 333 * </p> </li> </ul> <p>The name of this attribute conflicts with a reserved word, 334 * so it cannot be used directly in an expression. (For the complete list of 335 * reserved words, see <a 336 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html">Reserved 337 * Words</a> in the <i>Amazon DynamoDB Developer Guide</i>). To work around this, 338 * you could specify the following for <code>ExpressionAttributeNames</code>:</p> 339 * <ul> <li> <p> <code>{"#P":"Percentile"}</code> </p> </li> </ul> <p>You could 340 * then use this substitution in an expression, as in this example:</p> <ul> <li> 341 * <p> <code>#P = :val</code> </p> </li> </ul> <p>Tokens that begin with the 342 * <b>:</b> character are <i>expression attribute values</i>, which are 343 * placeholders for the actual value at runtime.</p> <p>For more 344 * information on expression attribute names, see <a 345 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html">Accessing 346 * Item Attributes</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> 347 */ ExpressionAttributeNamesHasBeenSet()348 inline bool ExpressionAttributeNamesHasBeenSet() const { return m_expressionAttributeNamesHasBeenSet; } 349 350 /** 351 * <p>One or more substitution tokens for attribute names in an expression. The 352 * following are some use cases for using 353 * <code>ExpressionAttributeNames</code>:</p> <ul> <li> <p>To access an attribute 354 * whose name conflicts with a DynamoDB reserved word.</p> </li> <li> <p>To create 355 * a placeholder for repeating occurrences of an attribute name in an 356 * expression.</p> </li> <li> <p>To prevent special characters in an attribute name 357 * from being misinterpreted in an expression.</p> </li> </ul> <p>Use the <b>#</b> 358 * character in an expression to dereference an attribute name. For example, 359 * consider the following attribute name:</p> <ul> <li> <p> <code>Percentile</code> 360 * </p> </li> </ul> <p>The name of this attribute conflicts with a reserved word, 361 * so it cannot be used directly in an expression. (For the complete list of 362 * reserved words, see <a 363 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html">Reserved 364 * Words</a> in the <i>Amazon DynamoDB Developer Guide</i>). To work around this, 365 * you could specify the following for <code>ExpressionAttributeNames</code>:</p> 366 * <ul> <li> <p> <code>{"#P":"Percentile"}</code> </p> </li> </ul> <p>You could 367 * then use this substitution in an expression, as in this example:</p> <ul> <li> 368 * <p> <code>#P = :val</code> </p> </li> </ul> <p>Tokens that begin with the 369 * <b>:</b> character are <i>expression attribute values</i>, which are 370 * placeholders for the actual value at runtime.</p> <p>For more 371 * information on expression attribute names, see <a 372 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html">Accessing 373 * Item Attributes</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> 374 */ SetExpressionAttributeNames(const Aws::Map<Aws::String,Aws::String> & value)375 inline void SetExpressionAttributeNames(const Aws::Map<Aws::String, Aws::String>& value) { m_expressionAttributeNamesHasBeenSet = true; m_expressionAttributeNames = value; } 376 377 /** 378 * <p>One or more substitution tokens for attribute names in an expression. The 379 * following are some use cases for using 380 * <code>ExpressionAttributeNames</code>:</p> <ul> <li> <p>To access an attribute 381 * whose name conflicts with a DynamoDB reserved word.</p> </li> <li> <p>To create 382 * a placeholder for repeating occurrences of an attribute name in an 383 * expression.</p> </li> <li> <p>To prevent special characters in an attribute name 384 * from being misinterpreted in an expression.</p> </li> </ul> <p>Use the <b>#</b> 385 * character in an expression to dereference an attribute name. For example, 386 * consider the following attribute name:</p> <ul> <li> <p> <code>Percentile</code> 387 * </p> </li> </ul> <p>The name of this attribute conflicts with a reserved word, 388 * so it cannot be used directly in an expression. (For the complete list of 389 * reserved words, see <a 390 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html">Reserved 391 * Words</a> in the <i>Amazon DynamoDB Developer Guide</i>). To work around this, 392 * you could specify the following for <code>ExpressionAttributeNames</code>:</p> 393 * <ul> <li> <p> <code>{"#P":"Percentile"}</code> </p> </li> </ul> <p>You could 394 * then use this substitution in an expression, as in this example:</p> <ul> <li> 395 * <p> <code>#P = :val</code> </p> </li> </ul> <p>Tokens that begin with the 396 * <b>:</b> character are <i>expression attribute values</i>, which are 397 * placeholders for the actual value at runtime.</p> <p>For more 398 * information on expression attribute names, see <a 399 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html">Accessing 400 * Item Attributes</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> 401 */ SetExpressionAttributeNames(Aws::Map<Aws::String,Aws::String> && value)402 inline void SetExpressionAttributeNames(Aws::Map<Aws::String, Aws::String>&& value) { m_expressionAttributeNamesHasBeenSet = true; m_expressionAttributeNames = std::move(value); } 403 404 /** 405 * <p>One or more substitution tokens for attribute names in an expression. The 406 * following are some use cases for using 407 * <code>ExpressionAttributeNames</code>:</p> <ul> <li> <p>To access an attribute 408 * whose name conflicts with a DynamoDB reserved word.</p> </li> <li> <p>To create 409 * a placeholder for repeating occurrences of an attribute name in an 410 * expression.</p> </li> <li> <p>To prevent special characters in an attribute name 411 * from being misinterpreted in an expression.</p> </li> </ul> <p>Use the <b>#</b> 412 * character in an expression to dereference an attribute name. For example, 413 * consider the following attribute name:</p> <ul> <li> <p> <code>Percentile</code> 414 * </p> </li> </ul> <p>The name of this attribute conflicts with a reserved word, 415 * so it cannot be used directly in an expression. (For the complete list of 416 * reserved words, see <a 417 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html">Reserved 418 * Words</a> in the <i>Amazon DynamoDB Developer Guide</i>). To work around this, 419 * you could specify the following for <code>ExpressionAttributeNames</code>:</p> 420 * <ul> <li> <p> <code>{"#P":"Percentile"}</code> </p> </li> </ul> <p>You could 421 * then use this substitution in an expression, as in this example:</p> <ul> <li> 422 * <p> <code>#P = :val</code> </p> </li> </ul> <p>Tokens that begin with the 423 * <b>:</b> character are <i>expression attribute values</i>, which are 424 * placeholders for the actual value at runtime.</p> <p>For more 425 * information on expression attribute names, see <a 426 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html">Accessing 427 * Item Attributes</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> 428 */ WithExpressionAttributeNames(const Aws::Map<Aws::String,Aws::String> & value)429 inline KeysAndAttributes& WithExpressionAttributeNames(const Aws::Map<Aws::String, Aws::String>& value) { SetExpressionAttributeNames(value); return *this;} 430 431 /** 432 * <p>One or more substitution tokens for attribute names in an expression. The 433 * following are some use cases for using 434 * <code>ExpressionAttributeNames</code>:</p> <ul> <li> <p>To access an attribute 435 * whose name conflicts with a DynamoDB reserved word.</p> </li> <li> <p>To create 436 * a placeholder for repeating occurrences of an attribute name in an 437 * expression.</p> </li> <li> <p>To prevent special characters in an attribute name 438 * from being misinterpreted in an expression.</p> </li> </ul> <p>Use the <b>#</b> 439 * character in an expression to dereference an attribute name. For example, 440 * consider the following attribute name:</p> <ul> <li> <p> <code>Percentile</code> 441 * </p> </li> </ul> <p>The name of this attribute conflicts with a reserved word, 442 * so it cannot be used directly in an expression. (For the complete list of 443 * reserved words, see <a 444 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html">Reserved 445 * Words</a> in the <i>Amazon DynamoDB Developer Guide</i>). To work around this, 446 * you could specify the following for <code>ExpressionAttributeNames</code>:</p> 447 * <ul> <li> <p> <code>{"#P":"Percentile"}</code> </p> </li> </ul> <p>You could 448 * then use this substitution in an expression, as in this example:</p> <ul> <li> 449 * <p> <code>#P = :val</code> </p> </li> </ul> <p>Tokens that begin with the 450 * <b>:</b> character are <i>expression attribute values</i>, which are 451 * placeholders for the actual value at runtime.</p> <p>For more 452 * information on expression attribute names, see <a 453 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html">Accessing 454 * Item Attributes</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> 455 */ WithExpressionAttributeNames(Aws::Map<Aws::String,Aws::String> && value)456 inline KeysAndAttributes& WithExpressionAttributeNames(Aws::Map<Aws::String, Aws::String>&& value) { SetExpressionAttributeNames(std::move(value)); return *this;} 457 458 /** 459 * <p>One or more substitution tokens for attribute names in an expression. The 460 * following are some use cases for using 461 * <code>ExpressionAttributeNames</code>:</p> <ul> <li> <p>To access an attribute 462 * whose name conflicts with a DynamoDB reserved word.</p> </li> <li> <p>To create 463 * a placeholder for repeating occurrences of an attribute name in an 464 * expression.</p> </li> <li> <p>To prevent special characters in an attribute name 465 * from being misinterpreted in an expression.</p> </li> </ul> <p>Use the <b>#</b> 466 * character in an expression to dereference an attribute name. For example, 467 * consider the following attribute name:</p> <ul> <li> <p> <code>Percentile</code> 468 * </p> </li> </ul> <p>The name of this attribute conflicts with a reserved word, 469 * so it cannot be used directly in an expression. (For the complete list of 470 * reserved words, see <a 471 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html">Reserved 472 * Words</a> in the <i>Amazon DynamoDB Developer Guide</i>). To work around this, 473 * you could specify the following for <code>ExpressionAttributeNames</code>:</p> 474 * <ul> <li> <p> <code>{"#P":"Percentile"}</code> </p> </li> </ul> <p>You could 475 * then use this substitution in an expression, as in this example:</p> <ul> <li> 476 * <p> <code>#P = :val</code> </p> </li> </ul> <p>Tokens that begin with the 477 * <b>:</b> character are <i>expression attribute values</i>, which are 478 * placeholders for the actual value at runtime.</p> <p>For more 479 * information on expression attribute names, see <a 480 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html">Accessing 481 * Item Attributes</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> 482 */ AddExpressionAttributeNames(const Aws::String & key,const Aws::String & value)483 inline KeysAndAttributes& AddExpressionAttributeNames(const Aws::String& key, const Aws::String& value) { m_expressionAttributeNamesHasBeenSet = true; m_expressionAttributeNames.emplace(key, value); return *this; } 484 485 /** 486 * <p>One or more substitution tokens for attribute names in an expression. The 487 * following are some use cases for using 488 * <code>ExpressionAttributeNames</code>:</p> <ul> <li> <p>To access an attribute 489 * whose name conflicts with a DynamoDB reserved word.</p> </li> <li> <p>To create 490 * a placeholder for repeating occurrences of an attribute name in an 491 * expression.</p> </li> <li> <p>To prevent special characters in an attribute name 492 * from being misinterpreted in an expression.</p> </li> </ul> <p>Use the <b>#</b> 493 * character in an expression to dereference an attribute name. For example, 494 * consider the following attribute name:</p> <ul> <li> <p> <code>Percentile</code> 495 * </p> </li> </ul> <p>The name of this attribute conflicts with a reserved word, 496 * so it cannot be used directly in an expression. (For the complete list of 497 * reserved words, see <a 498 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html">Reserved 499 * Words</a> in the <i>Amazon DynamoDB Developer Guide</i>). To work around this, 500 * you could specify the following for <code>ExpressionAttributeNames</code>:</p> 501 * <ul> <li> <p> <code>{"#P":"Percentile"}</code> </p> </li> </ul> <p>You could 502 * then use this substitution in an expression, as in this example:</p> <ul> <li> 503 * <p> <code>#P = :val</code> </p> </li> </ul> <p>Tokens that begin with the 504 * <b>:</b> character are <i>expression attribute values</i>, which are 505 * placeholders for the actual value at runtime.</p> <p>For more 506 * information on expression attribute names, see <a 507 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html">Accessing 508 * Item Attributes</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> 509 */ AddExpressionAttributeNames(Aws::String && key,const Aws::String & value)510 inline KeysAndAttributes& AddExpressionAttributeNames(Aws::String&& key, const Aws::String& value) { m_expressionAttributeNamesHasBeenSet = true; m_expressionAttributeNames.emplace(std::move(key), value); return *this; } 511 512 /** 513 * <p>One or more substitution tokens for attribute names in an expression. The 514 * following are some use cases for using 515 * <code>ExpressionAttributeNames</code>:</p> <ul> <li> <p>To access an attribute 516 * whose name conflicts with a DynamoDB reserved word.</p> </li> <li> <p>To create 517 * a placeholder for repeating occurrences of an attribute name in an 518 * expression.</p> </li> <li> <p>To prevent special characters in an attribute name 519 * from being misinterpreted in an expression.</p> </li> </ul> <p>Use the <b>#</b> 520 * character in an expression to dereference an attribute name. For example, 521 * consider the following attribute name:</p> <ul> <li> <p> <code>Percentile</code> 522 * </p> </li> </ul> <p>The name of this attribute conflicts with a reserved word, 523 * so it cannot be used directly in an expression. (For the complete list of 524 * reserved words, see <a 525 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html">Reserved 526 * Words</a> in the <i>Amazon DynamoDB Developer Guide</i>). To work around this, 527 * you could specify the following for <code>ExpressionAttributeNames</code>:</p> 528 * <ul> <li> <p> <code>{"#P":"Percentile"}</code> </p> </li> </ul> <p>You could 529 * then use this substitution in an expression, as in this example:</p> <ul> <li> 530 * <p> <code>#P = :val</code> </p> </li> </ul> <p>Tokens that begin with the 531 * <b>:</b> character are <i>expression attribute values</i>, which are 532 * placeholders for the actual value at runtime.</p> <p>For more 533 * information on expression attribute names, see <a 534 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html">Accessing 535 * Item Attributes</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> 536 */ AddExpressionAttributeNames(const Aws::String & key,Aws::String && value)537 inline KeysAndAttributes& AddExpressionAttributeNames(const Aws::String& key, Aws::String&& value) { m_expressionAttributeNamesHasBeenSet = true; m_expressionAttributeNames.emplace(key, std::move(value)); return *this; } 538 539 /** 540 * <p>One or more substitution tokens for attribute names in an expression. The 541 * following are some use cases for using 542 * <code>ExpressionAttributeNames</code>:</p> <ul> <li> <p>To access an attribute 543 * whose name conflicts with a DynamoDB reserved word.</p> </li> <li> <p>To create 544 * a placeholder for repeating occurrences of an attribute name in an 545 * expression.</p> </li> <li> <p>To prevent special characters in an attribute name 546 * from being misinterpreted in an expression.</p> </li> </ul> <p>Use the <b>#</b> 547 * character in an expression to dereference an attribute name. For example, 548 * consider the following attribute name:</p> <ul> <li> <p> <code>Percentile</code> 549 * </p> </li> </ul> <p>The name of this attribute conflicts with a reserved word, 550 * so it cannot be used directly in an expression. (For the complete list of 551 * reserved words, see <a 552 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html">Reserved 553 * Words</a> in the <i>Amazon DynamoDB Developer Guide</i>). To work around this, 554 * you could specify the following for <code>ExpressionAttributeNames</code>:</p> 555 * <ul> <li> <p> <code>{"#P":"Percentile"}</code> </p> </li> </ul> <p>You could 556 * then use this substitution in an expression, as in this example:</p> <ul> <li> 557 * <p> <code>#P = :val</code> </p> </li> </ul> <p>Tokens that begin with the 558 * <b>:</b> character are <i>expression attribute values</i>, which are 559 * placeholders for the actual value at runtime.</p> <p>For more 560 * information on expression attribute names, see <a 561 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html">Accessing 562 * Item Attributes</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> 563 */ AddExpressionAttributeNames(Aws::String && key,Aws::String && value)564 inline KeysAndAttributes& AddExpressionAttributeNames(Aws::String&& key, Aws::String&& value) { m_expressionAttributeNamesHasBeenSet = true; m_expressionAttributeNames.emplace(std::move(key), std::move(value)); return *this; } 565 566 /** 567 * <p>One or more substitution tokens for attribute names in an expression. The 568 * following are some use cases for using 569 * <code>ExpressionAttributeNames</code>:</p> <ul> <li> <p>To access an attribute 570 * whose name conflicts with a DynamoDB reserved word.</p> </li> <li> <p>To create 571 * a placeholder for repeating occurrences of an attribute name in an 572 * expression.</p> </li> <li> <p>To prevent special characters in an attribute name 573 * from being misinterpreted in an expression.</p> </li> </ul> <p>Use the <b>#</b> 574 * character in an expression to dereference an attribute name. For example, 575 * consider the following attribute name:</p> <ul> <li> <p> <code>Percentile</code> 576 * </p> </li> </ul> <p>The name of this attribute conflicts with a reserved word, 577 * so it cannot be used directly in an expression. (For the complete list of 578 * reserved words, see <a 579 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html">Reserved 580 * Words</a> in the <i>Amazon DynamoDB Developer Guide</i>). To work around this, 581 * you could specify the following for <code>ExpressionAttributeNames</code>:</p> 582 * <ul> <li> <p> <code>{"#P":"Percentile"}</code> </p> </li> </ul> <p>You could 583 * then use this substitution in an expression, as in this example:</p> <ul> <li> 584 * <p> <code>#P = :val</code> </p> </li> </ul> <p>Tokens that begin with the 585 * <b>:</b> character are <i>expression attribute values</i>, which are 586 * placeholders for the actual value at runtime.</p> <p>For more 587 * information on expression attribute names, see <a 588 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html">Accessing 589 * Item Attributes</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> 590 */ AddExpressionAttributeNames(const char * key,Aws::String && value)591 inline KeysAndAttributes& AddExpressionAttributeNames(const char* key, Aws::String&& value) { m_expressionAttributeNamesHasBeenSet = true; m_expressionAttributeNames.emplace(key, std::move(value)); return *this; } 592 593 /** 594 * <p>One or more substitution tokens for attribute names in an expression. The 595 * following are some use cases for using 596 * <code>ExpressionAttributeNames</code>:</p> <ul> <li> <p>To access an attribute 597 * whose name conflicts with a DynamoDB reserved word.</p> </li> <li> <p>To create 598 * a placeholder for repeating occurrences of an attribute name in an 599 * expression.</p> </li> <li> <p>To prevent special characters in an attribute name 600 * from being misinterpreted in an expression.</p> </li> </ul> <p>Use the <b>#</b> 601 * character in an expression to dereference an attribute name. For example, 602 * consider the following attribute name:</p> <ul> <li> <p> <code>Percentile</code> 603 * </p> </li> </ul> <p>The name of this attribute conflicts with a reserved word, 604 * so it cannot be used directly in an expression. (For the complete list of 605 * reserved words, see <a 606 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html">Reserved 607 * Words</a> in the <i>Amazon DynamoDB Developer Guide</i>). To work around this, 608 * you could specify the following for <code>ExpressionAttributeNames</code>:</p> 609 * <ul> <li> <p> <code>{"#P":"Percentile"}</code> </p> </li> </ul> <p>You could 610 * then use this substitution in an expression, as in this example:</p> <ul> <li> 611 * <p> <code>#P = :val</code> </p> </li> </ul> <p>Tokens that begin with the 612 * <b>:</b> character are <i>expression attribute values</i>, which are 613 * placeholders for the actual value at runtime.</p> <p>For more 614 * information on expression attribute names, see <a 615 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html">Accessing 616 * Item Attributes</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> 617 */ AddExpressionAttributeNames(Aws::String && key,const char * value)618 inline KeysAndAttributes& AddExpressionAttributeNames(Aws::String&& key, const char* value) { m_expressionAttributeNamesHasBeenSet = true; m_expressionAttributeNames.emplace(std::move(key), value); return *this; } 619 620 /** 621 * <p>One or more substitution tokens for attribute names in an expression. The 622 * following are some use cases for using 623 * <code>ExpressionAttributeNames</code>:</p> <ul> <li> <p>To access an attribute 624 * whose name conflicts with a DynamoDB reserved word.</p> </li> <li> <p>To create 625 * a placeholder for repeating occurrences of an attribute name in an 626 * expression.</p> </li> <li> <p>To prevent special characters in an attribute name 627 * from being misinterpreted in an expression.</p> </li> </ul> <p>Use the <b>#</b> 628 * character in an expression to dereference an attribute name. For example, 629 * consider the following attribute name:</p> <ul> <li> <p> <code>Percentile</code> 630 * </p> </li> </ul> <p>The name of this attribute conflicts with a reserved word, 631 * so it cannot be used directly in an expression. (For the complete list of 632 * reserved words, see <a 633 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/ReservedWords.html">Reserved 634 * Words</a> in the <i>Amazon DynamoDB Developer Guide</i>). To work around this, 635 * you could specify the following for <code>ExpressionAttributeNames</code>:</p> 636 * <ul> <li> <p> <code>{"#P":"Percentile"}</code> </p> </li> </ul> <p>You could 637 * then use this substitution in an expression, as in this example:</p> <ul> <li> 638 * <p> <code>#P = :val</code> </p> </li> </ul> <p>Tokens that begin with the 639 * <b>:</b> character are <i>expression attribute values</i>, which are 640 * placeholders for the actual value at runtime.</p> <p>For more 641 * information on expression attribute names, see <a 642 * href="https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.AccessingItemAttributes.html">Accessing 643 * Item Attributes</a> in the <i>Amazon DynamoDB Developer Guide</i>.</p> 644 */ AddExpressionAttributeNames(const char * key,const char * value)645 inline KeysAndAttributes& AddExpressionAttributeNames(const char* key, const char* value) { m_expressionAttributeNamesHasBeenSet = true; m_expressionAttributeNames.emplace(key, value); return *this; } 646 647 private: 648 649 Aws::Vector<Aws::Map<Aws::String, AttributeValue>> m_keys; 650 bool m_keysHasBeenSet; 651 652 Aws::Vector<Aws::String> m_attributesToGet; 653 bool m_attributesToGetHasBeenSet; 654 655 bool m_consistentRead; 656 bool m_consistentReadHasBeenSet; 657 658 Aws::String m_projectionExpression; 659 bool m_projectionExpressionHasBeenSet; 660 661 Aws::Map<Aws::String, Aws::String> m_expressionAttributeNames; 662 bool m_expressionAttributeNamesHasBeenSet; 663 }; 664 665 } // namespace Model 666 } // namespace DynamoDB 667 } // namespace Aws 668