#table #orm #scylla-db #struct #mapping #cassandra #automatic

catalytic_table_to_struct

Scylla ORM的表映射器,完全兼容Apache Cassandra™

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日

#1013 in 数据库接口

Download history 133/week @ 2024-03-14 29/week @ 2024-03-21 20/week @ 2024-03-28 12/week @ 2024-04-04 49/week @ 2024-04-11 27/week @ 2024-04-18 124/week @ 2024-04-25 385/week @ 2024-05-02 336/week @ 2024-05-09 228/week @ 2024-05-16 428/week @ 2024-05-23 287/week @ 2024-05-30 824/week @ 2024-06-06 287/week @ 2024-06-13 295/week @ 2024-06-20 379/week @ 2024-06-27

1,859 每月下载次数
用于 2 个crate(通过 catalytic_query_parser

MIT 许可证

105KB
2K SLoC

Catalytic:ScyllaDB和Cassandra对象关系映射器

Latest Version Build Status

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

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

查询类型

根据查询的不同,可以推导出特定类型的查询。这些可以在这里找到。这些是常用查询类型:

  • SelectMultiple:可以用作迭代器来遍历行
  • SelectUnique:通过完整主键选择可选的唯一行
  • SelectUniqueExpect:与SelectUnique相同,但如果行不存在则失败
  • SelectUniqueExpectCount作为实体类型:具有特殊的select_count方法,用于查询如"select count(*) from ..."

还有用于CRUD操作的struct

用法

自动将表映射到Rust

您可以在示例目录中查看如何生成Rust struct的示例。

  • 在build.rs文件中实现了Transformer特性和使用json映射
  • 在生成的目录中您可以查看生成的struct

如何自行实现它(逐步指南如何模拟example crate)

  • 添加build依赖项:catalytic_table_to_struct = "0.1"
  • 创建一个build.rs文件
  • 可选实现Tranformer特性和使用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 可用于其他派生宏。

在生产中使用。

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

依赖项

约11-21MB
约291K SLoC