⚡🦀 🧨 make your rust types fit DynamoDB and visa versa
dynomite makes DynamoDB fit your types (and visa versa)
Goals
Features
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.
In your Cargo.toml file, add the following under the
[dependencies]heading
dynomite = "0.10"
You can find some example application code under dynomite/examples
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
Doug Tangren (softprops) 2018-2020