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 99 100 101 102 103 104 105 106
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 to consume this and set up a DynamoDB
/// operation (via an appropriate fluent builder):
/// * [`put_item`]
/// * [`get_item`]
/// * [`scan`]
/// * [`query`]
/// * [`update_item`]
/// * [`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.
///
/// [`Expression::builder()`]: Self::builder
/// [`put_item`]: Self::put_item
/// [`get_item`]: Self::get_item
/// [`scan`]: Self::scan
/// [`query`]: Self::query
/// [`update_item`]: Self::update_item
/// [`delete_item`]: Self::delete_item
// TODO: An example.
#[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()
}
}