23 个版本

0.1.24 2023年12月29日
0.1.20 2023年10月26日
0.1.14 2023年7月9日
0.1.12 2023年1月31日
0.1.0 2022年1月20日

#435数据库接口

Download history • Rust 包仓库 80/week @ 2024-04-22 • Rust 包仓库 194/week @ 2024-04-29 • Rust 包仓库 312/week @ 2024-05-06 • Rust 包仓库 392/week @ 2024-05-13 • Rust 包仓库 281/week @ 2024-05-20 • Rust 包仓库 324/week @ 2024-05-27 • Rust 包仓库 450/week @ 2024-06-03 • Rust 包仓库 824/week @ 2024-06-10 • Rust 包仓库 168/week @ 2024-06-17 • Rust 包仓库 374/week @ 2024-06-24 • Rust 包仓库 581/week @ 2024-07-01 • Rust 包仓库 210/week @ 2024-07-08 • Rust 包仓库 257/week @ 2024-07-15 • Rust 包仓库 159/week @ 2024-07-22 • Rust 包仓库 431/week @ 2024-07-29 • Rust 包仓库 511/week @ 2024-08-05 • Rust 包仓库

1,358 每月下载量
3 crates 中使用

MIT 许可证

39KB
888

催化剂:ScyllaDB 和 Cassandra 对象关系映射器

Latest Version Build Status

此库包含以下功能的几个 crates
  • 自动将表映射到 Rust structcatalytic_table_to_struct。请参阅 用法。生成的代码在 生成 目录中。
  • 编译时检查查询:catalytic_macro (catalytic_macro::query)。请参阅 用法
  • 生成业务逻辑的插件 derive 宏:catalytic_macro (catalytic_macro::mirror)
  • 自动 JSON 映射。当存在类型为 text 的列时,您可以实现 Transformer trait 并将其映射到实现 serde::Serializeserde::Deserialize 的类型
  • 所有查询都作为预处理语句执行
  • 支持物化视图(如果列相同,则支持基表之间的映射)

由于 https://github.com/scylladb/scylla-rust-driver/issues/104,尚不支持所有类型

查询类型

根据查询,可以推导出某种查询类型。这些可以在 这里 找到。以下是常用的查询类型

  • SelectMultiple:可以作为迭代器遍历行
  • SelectUnique:通过完整主键选择一个可选的唯一行
  • SelectUniqueExpect:与 SelectUnique 相同,但行不存在时失败
  • 带有 Count 作为实体类型的 SelectUniqueExpect

还存在用于 CRUD 操作的 struct

用法

自动将映射表映射到 Rust

您可以在 example 目录中看到一个如何生成 Rust struct 的示例。

  • 在 build.rs 文件中实现了 Transformer trait 并用于 JSON 映射
  • 在生成的目录中,您可以查看生成的 struct

如何自己实现它(模仿 example 包的步骤指南)

  • 添加构建依赖项:catalytic_table_to_struct = "0.1"
  • 创建一个 build.rs 文件
  • 可选地实现 Tranformer trait(或使用 DefaultTransformer
  • 调用 catalytic_table_to_struct::generate
  • 构建项目

以下是表 'child' 生成的代码结构的示例

  • Child:一个包含所有值的 struct。可以转换为 ChildRef、PrimaryKey 和 PrimaryKeyRef
  • ChildRef:一个所有值都是借用值的 struct。此结构可以执行插入操作。可以转换为 Child、PrimaryKey 和 PrimaryKeyRef
  • PrimaryKey:一个包含 Child 的主键字段所有值的 struct。可以转换为 PrimaryKeyRef。
  • PrimaryKeyRef:一个所有值都是借用值的 struct。此结构可以执行更新、删除和选择操作。可以转换为 PrimaryKey
  • UpdatableColumn:一个包含可以更新的列的所有值的枚举变体的 enum。可以转换为 UpdatableColumnRef。
  • UpdatableColumnRef:一个所有值都是借用值的 enum。这是 PrimaryKeyRef 用于更新的。可以转换为 UpdatableColumn。

Crate catalytic_macro 包含几个宏,可用于确保编译/类型检查查询。如何在 lib.rs 中的方法 qmd 中使用这些宏的示例。

如何实现它

  • 添加依赖项:catalytic_macro = "0.1"
  • query 宏返回给定查询的正确 查询类型
  • query_base_table 宏将 select 查询转换为物化视图表,转换为基本表的 select 查询
  • mirrorprimary_key 可以用于其他 derive 宏

在生产中使用

https://www.beezleapp.com/ - Beezle 社交让用户连接附近的用户,发现当地活动

依赖关系

~11–20MB
~271K SLoC