edgedb-derive 0.2.0

Derive macros for EdgeDB database client.
Documentation
use edgedb_derive::Queryable;
use edgedb_protocol::queryable::{Queryable, Decoder};

#[derive(Queryable, Debug, PartialEq)]
struct ScalarType {
    name: String,
    extending: String,
    kind: String,
}

fn old_decoder() -> Decoder {
    let mut dec = Decoder::default();
    dec.has_implicit_tid = true;
    return dec;
}

#[test]
fn decode_new() {
    let data = b"\0\0\0\x04\0\0\x0b\x86\0\0\0\x10\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
        \x01\x0c\0\0\0\x19\0\0\0\x0fcal::local_date\
        \0\0\0\x19\0\0\0\x0estd::anyscalar\0\0\0\x19\0\0\0\x06normal";
    let res = ScalarType::decode(&Decoder::default(), data);
    assert_eq!(res.unwrap(), ScalarType {
        name: "cal::local_date".into(),
        extending: "std::anyscalar".into(),
        kind: "normal".into(),
    });
}


#[test]
fn decode_old() {
    let data = b"\0\0\0\x05\0\0\x0b\x86\
        \0\0\0\x10\xb2\xa1\x94\xfb\t\xa4\x11\xeb\x9d\x97\xf9'\
        \xee\xfc\xb6\x12\0\0\x0b\x86\0\0\0\x10\0\0\0\0\0\0\0\0\0\0\0\0\0\0\
        \x01\x0c\0\0\0\x19\0\0\0\x0fcal::local_date\
        \0\0\0\x19\0\0\0\x0estd::anyscalar\0\0\0\x19\0\0\0\x06normal";
    let res = ScalarType::decode(&old_decoder(), data);
    assert_eq!(res.unwrap(), ScalarType {
        name: "cal::local_date".into(),
        extending: "std::anyscalar".into(),
        kind: "normal".into(),
    });
}