2个不稳定版本
0.3.0 | 2024年3月15日 |
---|---|
0.1.0 | 2024年3月15日 |
#13 在 #crud
55KB
724 行
miniorm
miniorm
包提供在 sqlx
上构建的一个非常简单的 ORM。
sqlx
已经提供了一个可以自动派生的 FromRow
trait,用于将数据库中的行转换为对象。然而,没有相应的 ToRow
宏可以允许将对象转换回行以便插入数据库。
这就是 miniorm
出现的地方。它提供了一个可以自动派生的 Schema
trait,可以描述用于给定实体的表结构(即 struct
)。
任何实现了 FromRow
和 Schema
trait 的结构体都可以用来创建一个 CrudStore
,提供所谓的“CRUD”操作
- (C) 创建
- (R) 读取
- (U) 更新
- (D) 删除
目前,miniorm
仅支持 postgres 后端。未来可能会提供其他后端。
示例
use sqlx::FromRow;
use miniorm::Schema;
#[derive(Debug, Clone, Eq, PartialEq, FromRow, Schema)]
struct Todo {
#[column(TEXT NOT NULL)]
description: String,
#[column(BOOLEAN NOT NULL DEFAULT false)]
done: bool,
}
更多完整的示例,请参见
- todo示例(简单示例)。
- 股票交易示例(更复杂的示例),其中某些字段存储为
JSONB
列,使用serde_json
。
依赖项
~38–51MB
~892K SLoC