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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
//! High level dynamodb crate
//!
//! ```ignore
//! use nitroglycerin::{Attributes, Key, Query, Table, DynamoDb, dynamodb::DynamoDbClient};
//! use rusoto_core::Region;
//!
//! #[derive(Debug, PartialEq, Attributes, Key, Query)]
//! struct Employee {
//! #[nitro(partition_key)]
//! id: String,
//! #[nitro(rename = "firstName")]
//! name: String,
//! joined: i64,
//! left: Option<i64>,
//! }
//!
//! impl Table for Employee {
//! fn table_name() -> String {
//! "Employees".to_string()
//! }
//! }
//!
//! #[derive(Debug, PartialEq, Attributes, Query)]
//! struct EmployeeNameIndex {
//! #[nitro(partition_key, rename = "firstName")]
//! name: String,
//! #[nitro(sort_key)]
//! joined: i64,
//! }
//!
//! impl IndexTable for EmployeeNameIndex {
//! type Table = Employees;
//! fn index_name() -> Option<String> {
//! Some("EmployeeNamesIndex".to_string())
//! }
//! }
//!
//! let client = DynamoDbClient::new(Region::default());
//!
//! let employee: Option<Employee> = client.get::<Employee>()
//! .id("emp_1") // get the employee with id "emp_1"
//! .execute().await?;
//!
//! let new_employee = Employee {
//! id: "emp_1234".into(),
//! name: "Conrad".into(),
//! joined: 1626900000,
//! left: None,
//! };
//! // Put the new employee item into the db
//! client.put(new_employee).execute().await?;
//!
//! let employees: Vec<EmployeeNameIndex> = client.query::<EmployeeNameIndex>()
//! .name("John") // query the db for all employees named "John"
//! .execute().await?;
//!
//! let employees: Vec<EmployeeNameIndex> = client.query::<EmployeeNameIndex>()
//! .name("John") // query the db for all employees named "John"
//! .joined().between(1626649200, 1626735600) // and who joined between 2021-07-19 and 2021-07-20
//! .execute().await?;
//! ```
/// module covering conversions to and from dynamodb attribute values
/// collection of functions and types used to make get item requests
/// collection of functions and types used to make key requests
/// collection of functions and types used to make put item requests
/// collection of functions and types used to make delete item requests
/// collection of functions and types used to make query requests
use ;
pub use DynamoDb;
pub use ;
pub use rusoto_dynamodb as dynamodb;
use Error;
/// Trait indicating that a type is a dynamodb table
/// Trait indicating that a type is a dynamodb index
/// Error returned by dynamodb requests
/// Convenient type for a attribute value map
pub type Attributes = ;
/// Error returned when parsing attribute values