2个不稳定版本
0.4.0 | 2021年12月4日 |
---|---|
0.3.0 | 2021年10月20日 |
#14 in #toql
在 3 个crate中使用(通过toql)
11KB
182 行
Toql - 一个友好且高效的ORM
Toql是一个为异步数据库提供的ORM,具有以下特性:
- 在Rust结构体和数据库表之间进行转换。
- 可以加载和修改嵌套结构体。
- 独特的简单查询语言,适用于Web客户端。
- 支持从长且易读的别名到短且快速的别名。
- 针对SQL注入的预处理语句。
- 支持原始SQL以充分利用数据库功能。
- 支持基于角色的访问。
- 通过用户定义的参数、查询函数、字段处理器等高度可定制。
- 查询、字段和路径名称的编译时安全性。
- 没有不安全Rust代码。
- 在真实场景下进行过测试。
它目前只支持 MySQL。更多支持即将到来,敬请期待 :)
安装
将以下内容添加到您的 Cargo.toml
[dependencies]
toql = {version = "0.4", features = ["serde"]}
toql_mysql_async = "0.4"
外观和感觉
推导您的结构体
#[derive(Toql)]
#[toql(auto_key)]
struct Todo {
#[toql(key)]
id: u64,
what: String,
#[toql(join)]
user: User
}
并使用它们做事情
let toql = ...
let todo = Todo{ ... };
// Insert todo and update its generated id
toql.insert_one(&mut todo, paths!(top)).await?;
// Compile time checked queries!
let q = query!(Todo, "*, user_id eq ?", &todo.user.id);
// Typesafe loading
let todos = toql.load_many(q).await?;
快速入门
查看 CRUD示例。
贡献
欢迎评论、错误修复和质量改进。
许可
Toql以MIT许可和Apache许可(版本2.0)的条款进行分发。
依赖关系
~6–15MB
~180K SLoC