Skip to content

Repository files navigation

🦀🧨

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;letmut 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)]structOrder{#[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, Alexander Zaitsev (zamazan4ik) 2021

About

⚡🦀 🧨 make your rust types fit DynamoDB and visa versa

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages