#dynamo-db #rusoto #rusoto-dynamodb

dynomite

提供一套高级高效的 DynamoDB 接口

21 个不稳定版本 (10 个破坏性更新)

0.10.0 2020 年 9 月 6 日
0.9.0 2020 年 7 月 14 日
0.8.2 2020 年 6 月 4 日
0.7.0 2019 年 11 月 3 日
0.1.3 2018 年 3 月 8 日

#758数据库接口

Download history 31/week @ 2024-03-11 22/week @ 2024-03-18 66/week @ 2024-04-01 13/week @ 2024-04-08 11/week @ 2024-04-15 14/week @ 2024-04-22 12/week @ 2024-04-29 14/week @ 2024-05-06 12/week @ 2024-05-13 20/week @ 2024-05-20 8/week @ 2024-05-27 20/week @ 2024-06-03 11/week @ 2024-06-10 11/week @ 2024-06-17 16/week @ 2024-06-24

每月 59 次下载
用于 sim1h

MIT 许可证

80KB
2K SLoC

🦀🧨

dynomite

dynomite 让 DynamoDB 更适合您的类型(反之亦然)


概述

目标

  • ⚡ 在 dynamodb 应用程序中使用 rust 编写应用程序,这是一种富有成效的体验
  • 🦀 利用 rust 的类型安全特性
  • 👩‍💻 利用 rusoto rust 项目的现有工作
  • ☔ 承诺支持使用稳定 rust 构建的应用程序
  • 📚 承诺编写文档

功能

  • 💌 减少样板代码
  • ♻️ 自动异步分页
  • 🕶️ 为 robust error handling 提供客户端级别的重试接口

从这里

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()
  }
);

到那里

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();

请参阅 API 文档 了解如何开始。祝您享受。

📦 安装

在您的 Cargo.toml 文件中,在 [dependencies] 标题下添加以下内容

dynomite = "0.10"

🤸 示例

您可以在 dynomite/examples 下找到一些示例应用程序代码

DynamoDB 本地

AWS 提供了一种方便的方式,通过 DynamoDB local 来托管本地实例进行测试。

以下是一个使用 dynomite 和 rusoto_dynamodb 快速启动本地测试的简单示例。

在另一个终端中,启动一个 Docker 容器,用于 DynamoDB local,监听端口 8000

$ docker run --rm -p 8000:8000 amazon/dynamodb-local

然后,运行一个 rust 二进制文件,客户端初始化方式与您在 local.rs 示例 中看到的方式相同

资源

Doug Tangren (softprops) 2018-2020

依赖项

~16–22MB
~386K SLoC