13个版本

0.5.0 2022年3月27日
0.4.2 2021年1月20日
0.3.3 2020年4月20日
0.2.1 2020年3月28日
0.1.0 2020年1月25日

#1310数据库接口

Download history 16/week @ 2024-03-30 5/week @ 2024-04-06

每月55次下载
2 crates 中使用

MIT 许可证

45KB
1.5K SLoC

debil debil at crates.io

ORM旨在提供表宏和自动迁移

表宏

您需要指定 sql_type,使其成为每个DB crate提供的内容。

#[derive(Table)]
#[sql(table_name = "ex_1", sql_type = "...", primary_key = "pk")]
struct Ex1 {
    #[sql(size = 50, unique = true, not_null = true)]
    field1: String,
    aaaa: i32,
    pk: i32,
}

此示例为该结构体派生了一些有用的映射函数。请参阅debil的文档中的函数。

访问器宏

访问器宏提供了一种安全访问每一列的方式。这对于构建查询很有用。

// Use Accessor derive here!
#[derive(Table, Accessor)]
#[sql(table_name = "ex_1", sql_type = "...", primary_key = "pk")]
struct Ex1 {
    field1: String,
    aaaa: i32,
    pk: i32,
}

// Use accessor! macro to access to a field with table_name prefixed
assert_eq!(accessor!(Ex1::field1), "ex_1.field1");

// If you only need field name, use accessor_name! macro
assert_eq!(accessor_name!(Ex1::aaaa), "aaaa");

// Or you can just call the field name function directly, which is derived by Accessor derive
assert_eq!(Ex1::field1(), "field1");

// accessor!(Ex1::foobar) <- compile error!

依赖

~2–19MB
~263K SLoC