dynamodb_expression/expression/
mod.rs

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