13 releases
0.5.0 | Mar 27, 2022 |
---|---|
0.4.2 | Jan 20, 2021 |
0.3.3 | Apr 20, 2020 |
0.2.1 | Mar 28, 2020 |
0.1.0 | Jan 25, 2020 |
#1452 in Database interfaces
Used in 2 crates
45KB
1.5K
SLoC
debil
ORM aims to provide Table macro and auto migration
Table macro
You need to specify sql_type
to be something that each DB crate provides.
#[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,
}
This example derives some useful mapper functions for this struct. See functions in debil's docs.
Accessor macro
Accessor macro provides safe way to access to each column. This is useful for constructing a query.
// 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!
Dependencies
~3–20MB
~287K SLoC