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}