Expand description
High level dynamodb crate
ⓘ
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?;Re-exports§
pub use rusoto_dynamodb as dynamodb;
Modules§
- convert
- module covering conversions to and from dynamodb attribute values
- delete
- collection of functions and types used to make delete item requests
- key
- collection of functions and types used to make key requests
- put
- collection of functions and types used to make put item requests
- query
- collection of functions and types used to make query requests
Enums§
- Attribute
Error - Error returned when parsing attribute values
- Dynamo
Error - Error returned by dynamodb requests
Traits§
- Dynamo
Db - Extension trait providing high level implementations of dynamodb requests
- Table
- Trait indicating that a type is a dynamodb table
- Table
Index - Trait indicating that a type is a dynamodb index
Type Aliases§
- Attributes
- Convenient type for a attribute value map
Derive Macros§
- Attributes
- Implement
Into<Attributes>andTryFrom<Attributes> - Key
- Implement a strongly typed key builder. This is used to setup get requests
- Query
- Implement a strongly typed query builder. This is used to setup query requests