6 个版本
0.0.6 | 2022年7月29日 |
---|---|
0.0.5 | 2021年10月29日 |
0.0.3 | 2021年6月8日 |
0.0.2 | 2021年5月28日 |
0.0.1 | 2021年4月9日 |
#1836 在 数据库接口
每月24次下载
27KB
599 行
Adom - Rust 中异步-postgres 的轻量级对象映射器
此 crate 包含一系列宏,用于为您的 Serde 结构体生成简单的 CRUD 函数
Adom 不打算成为一个完整的 ORM,如 diesel。它是为那些想直接使用 postgres 驱动的用户准备的。但同时也想消除一些简单表对象的样板代码。
设置您的结构体
在您的结构体的顶部添加一个属性,将其连接到数据库表
#[AdomTable = "orders"]
pub struct Order{
id: i32,
customer: String,
total: f64,
}
恭喜,没有发生任何事情,但现在您可以使用 Adom 了
Adom derive 属性
要使用 Adom,请在您的结构体中添加 derive 语句以添加有用的函数
#[derive(Deserialize, AdomSelect, AdomUpdate, AdomCreate, AdomDelete)]
#[AdomTable = "orders"]
pub struct Order{
id: i32,
customer: String,
total: f64,
}
每个 derive 都添加与数据库操作相关的函数。只添加您想要的或需要的函数
AdomSelect
- Order::find_by_id(... )
- Order::with_ids(... )
- Order::one_where(... )
- Order::find_where(... )
- Order::find_all(... )
AdomCreate
- order.create(.... )
AdomUpdate
- order.update(.... )
AdomDelete
- order.delete(.... )
辅助属性
有几个辅助属性可以修改 Adom 的行为
AdomColumn - 用于当结构体字段名与数据库列名不匹配时
#[derive(Deserialize, AdomSelect, AdomUpdate, AdomCreate, AdomDelete)]
#[AdomTable = "orders"]
pub struct Order{
id: i32,
#[AdomColumn = "customer_name"]
customer: String,
total: f64,
}
AdomIgnore - 忽略结构体上的字段
#[derive(Deserialize, AdomSelect, AdomUpdate, AdomCreate, AdomDelete)]
#[AdomTable = "orders"]
pub struct Order{
id: i32,
customer: String,
total: f64,
#[AdomIgnore]
random_extra_field_that_has_nothing_to_do_with_db: Vec<u8>,
}
AdomAuditable - 自动填充和更新传统的数据库审计字段
#[derive(Deserialize, AdomSelect, AdomUpdate, AdomCreate, AdomDelete)]
#[AdomTable = "orders"]
#[AdomAuditable]
pub struct Order{
id: i32,
customer: String,
total: f64,
updated_at: SystemTime,
created_at: SystemTime,
updated_by: String,
created_by: String,
}
依赖项
~7–17MB
~233K SLoC