21 unstable releases (10 breaking)
0.10.0 | Sep 6, 2020 |
---|---|
0.9.0 | Jul 14, 2020 |
0.8.2 | Jun 4, 2020 |
0.7.0 | Nov 3, 2019 |
0.1.3 | Mar 8, 2018 |
#713 in Database interfaces
29 downloads per month
Used in sim1h
80KB
2K
SLoC
dynomite
dynomite makes DynamoDB fit your types (and visa versa)
Overview
Goals
- โก make writing dynamodb applications in rust a productive experience
- ๐ฆ exploit rust's type safety features
- ๐ฉโ๐ป leverage existing work of the rusoto rust project
- โ commitment to supporting applications built using stable rust
- ๐ commitment to documentation
Features
- ๐ less boilerplate
- โป๏ธ automatic async pagination
- ๐ถ๏ธ client level retry interfaces for robust error handling
From this
use std::collections::HashMap;
use rusoto_dynamodb::AttributeValue;
use uuid::Uuid;
let mut item = HashMap.new();
item.insert(
"pk".to_string(), AttributeValue {
s: Some(Uuid::new_v4().to_hyphenated().to_string()),
..AttributeValue::default()
}
);
item.insert(
// ๐คฌtypos anyone?
"quanity".to_string(), AttributeValue {
n: Some("whoops".to_string()),
..AttributeValue::default()
}
);
To this
use dynomite::Item;
use uuid::Uuid;
#[derive(Item)]
struct Order {
#[dynomite(partition_key)]
pk: Uuid,
quantity: u16
}
let item = Order {
pk: Uuid::new_v4(),
quantity: 4
}.into();
Please see the API documentation for how to get started. Enjoy.
๐ฆ Install
In your Cargo.toml file, add the following under the [dependencies]
heading
dynomite = "0.10"
๐คธ Examples
You can find some example application code under dynomite/examples
DynamoDB local
AWS provides a convenient way to host a local instance of DynamoDB for testing.
Here is a short example of how to get up a testing locally quickly with both dynomite as well as rusoto_dynamodb
.
In one terminal spin up a Docker container for DynamoDB local listening on port 8000
$ docker run --rm -p 8000:8000 amazon/dynamodb-local
In another, run a rust binary with a client initialized like you see the the local.rs example
Resources
Doug Tangren (softprops) 2018-2020
Dependencies
~16โ22MB
~395K SLoC