Crate nitroglycerin

Crate nitroglycerin 

Source
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§

AttributeError
Error returned when parsing attribute values
DynamoError
Error returned by dynamodb requests

Traits§

DynamoDb
Extension trait providing high level implementations of dynamodb requests
Table
Trait indicating that a type is a dynamodb table
TableIndex
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> and TryFrom<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