1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98
mod builder;
mod to_aws;
pub use builder::Builder;
use std::collections::HashMap;
use aws_sdk_dynamodb::types::AttributeValue;
/// The data needed for various [`aws_sdk_dynamodb`] input types.
///
/// Use [`Builder`] (via [`Expression::builder`]) to create a DynamoDB
/// condition, filter, key condition, or update expression.
///
/// You can use the these methods (see their docs for examples) to consume this
/// and set up a DynamoDB operation:
/// * [`Expression::put_item`]
/// * [`Expression::get_item`]
/// * [`Expression::scan`]
/// * [`Expression::query`]
/// * [`Expression::update_item`]
/// * [`Expression::delete_item`]
///
/// See also the `to_*_input_builder` and `to_*_fluent_builder` methods for
/// populating [`aws_sdk_dynamodb`] types.
///
/// You can use the fields on this struct to manually populate an
/// [`aws_sdk_dynamodb`] input type, or you can use one of the many methods on
/// this to automatically build or populate one of those types.
///
#[must_use = "Use the fields or methods to create an input type for `aws_sdk_dynamodb"]
#[derive(Debug, Clone)]
#[cfg_attr(test, derive(PartialEq))]
pub struct Expression {
/// The string to use as a DynamoDB [condition expression][1].
///
/// Be sure to also use [`.expression_attribute_names`] and
/// [`.expression_attribute_values`].
///
/// [1]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ConditionExpressions.html
/// [`.expression_attribute_names`]: Self::expression_attribute_names
/// [`.expression_attribute_values`]: Self::expression_attribute_values
pub condition_expression: Option<String>,
/// The string to use use as a DynamoDB [key condition expression][1].
///
/// Be sure to also use [`.expression_attribute_names`] and
/// [`.expression_attribute_values`].
///
/// [1]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Query.KeyConditionExpressions.html
/// [`.expression_attribute_names`]: Self::expression_attribute_names
/// [`.expression_attribute_values`]: Self::expression_attribute_values
pub key_condition_expression: Option<String>,
/// The string to use as a DynamoDB [update expression][1].
///
/// Be sure to also use [`.expression_attribute_names`] and
/// [`.expression_attribute_values`].
///
/// [1]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.UpdateExpressions.html
/// [`.expression_attribute_names`]: Self::expression_attribute_names
/// [`.expression_attribute_values`]: Self::expression_attribute_values
pub update_expression: Option<String>,
/// The string to use as a DynamoDB [filter expression][1].
///
/// Be sure to also use [`.expression_attribute_names`] and
/// [`.expression_attribute_values`].
///
/// [1]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Query.FilterExpression.html
/// [`.expression_attribute_names`]: Self::expression_attribute_names
/// [`.expression_attribute_values`]: Self::expression_attribute_values
pub filter_expression: Option<String>,
/// The string to use as a DynamoDB [projection expression][1].
///
/// Be sure to also use [`.expression_attribute_names`].
///
/// [1]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ProjectionExpressions.html
/// [`.expression_attribute_names`]: Self::expression_attribute_names
pub projection_expression: Option<String>,
/// DynamoDB [expression attribute names][1].
///
/// [1]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ExpressionAttributeNames.html
pub expression_attribute_names: Option<HashMap<String, String>>,
/// DynamoDB [expression attribute values][1].
///
/// [1]: https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Expressions.ExpressionAttributeValues.html
pub expression_attribute_values: Option<HashMap<String, AttributeValue>>,
}
impl Expression {
pub fn builder() -> Builder {
Builder::default()
}
}