Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/jakkusakura/gluesql-derive

generate traits like FromGlueSqlRow to enable basic ORM functionality
https://github.com/jakkusakura/gluesql-derive

Last synced: about 6 hours ago
JSON representation

generate traits like FromGlueSqlRow to enable basic ORM functionality

Awesome Lists containing this project

README

        

# gluesql-derive

generate traits like ReflectGlueSqlRow, FromGlueSqlRow, ToGlueSqlRow to enable basic ORM functionality

# Example

```rust
#[test]
fn test_reflectgluesql_field_struct() {
#[allow(unused)]
#[derive(ReflectGlueSqlRow)]
struct Foo {
a: i64,
b: bool,
c: String,
d: Option,
}
assert_eq!(Foo::columns(), vec!["a", "b", "c", "d"]);
}

#[test]
fn test_fromgluesql_field_struct() {
#[derive(FromGlueSqlRow)]
struct Foo {
a: i64,
b: bool,
c: String,
d: Option,
}
let data = Foo::from_gluesql_row(
&[
"a".to_string(),
"b".to_string(),
"c".to_string(),
"d".to_string(),
],
vec![
Value::I64(1),
Value::Bool(true),
Value::Str("hello".to_string()),
Value::Null,
],
)
.unwrap();
assert_eq!(data.a, 1);
assert_eq!(data.b, true);
assert_eq!(data.c, "hello");
assert_eq!(data.d, None);
}

#[test]
fn test_togluesql_field_struct() {
#[derive(ToGlueSqlRow)]
struct Foo {
a: i64,
b: bool,
c: String,
d: Option,
e: rust_decimal::Decimal,
}
let data = Foo {
a: 1,
b: true,
c: "hello".to_string(),
d: None,
e: rust_decimal::Decimal::from_str("1.23").unwrap(),
};
let row = data.to_gluesql_row();
println!("{:?}", row);
}

```