#postgresql #async #objectmapper

adom

异步-postgres 宏用于对象映射

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次下载

BSD-3-Clause

27KB
599

Adom - Rust 中异步-postgres 的轻量级对象映射器

此 crate 包含一系列宏,用于为您的 Serde 结构体生成简单的 CRUD 函数

Adom 不打算成为一个完整的 ORM,如 diesel。它是为那些想直接使用 postgres 驱动的用户准备的。但同时也想消除一些简单表对象的样板代码。

有关在项目中使用 adom 的简单示例,请参阅此处

设置您的结构体

在您的结构体的顶部添加一个属性,将其连接到数据库表

#[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