3 个版本 (重大变更)
0.3.0 | 2024年3月15日 |
---|---|
0.2.0 | 2024年3月15日 |
0.1.0 | 2024年3月15日 |
#939 在 数据库接口
55KB
696 行
miniorm
miniorm 库提供了一个基于 sqlx
的非常简单的 ORM。
sqlx
已经提供了一个可以自动派生的 FromRow
trait,用于将数据库中的行转换为对象。然而,没有对应的 ToRow
宏可以将对象转换回行以便插入到数据库中。
这就是 miniorm
的用武之地。它提供了一个可以自动派生的 Schema
trait,用于描述特定实体(即 struct
)应使用的表模式。
任何实现了 FromRow
和 Schema
trait 的结构体都可以用来创建一个 CrudStore
,它提供了所谓的 "CRUD" 操作
- (C)reate
- (R)ead
- (U)pdate
- (D)elete
目前,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
。
依赖项
~51MB
~891K SLoC