edgedb-tokio 0.5.0

EdgeDB database client implementation for tokio.
Documentation
use edgedb_tokio::Client;

use crate::server::SERVER;

#[tokio::test]
async fn global_fn() -> anyhow::Result<()> {
    let client = Client::new(&SERVER.config);
    client.ensure_connected().await?;

    let value = client
        .with_default_module(Some("test"))
        .with_globals_fn(|m| m.set("str_val", "hello"))
        .query::<String, _>("SELECT (global str_val)", &()).await?;
    assert_eq!(value, vec![String::from("hello")]);

    let value = client
        .with_default_module(Some("test"))
        .with_globals_fn(|m| m.set("int_val", 127))
        .query::<i32, _>("SELECT (global int_val)", &()).await?;
    assert_eq!(value, vec![127]);
    Ok(())
}

#[cfg(feature="derive")]
#[tokio::test]
async fn global_struct() -> anyhow::Result<()> {

    #[derive(edgedb_derive::GlobalsDelta)]
    struct Globals {
        str_val: &'static str,
        int_val: i32,
    }

    let client = Client::new(&SERVER.config);
    client.ensure_connected().await?;

    let value = client
        .with_default_module(Some("test"))
        .with_globals(&Globals {
            str_val: "value1",
            int_val: 345,
        })
        .query::<String, _>("SELECT (global str_val)", &()).await?;
    assert_eq!(value, vec![String::from("value1")]);

    let value = client
        .with_default_module(Some("test"))
        .with_globals(&Globals {
            str_val: "value2",
            int_val: 678,
        })
        .query::<i32, _>("SELECT (global int_val)", &()).await?;
    assert_eq!(value, vec![678]);
    Ok(())
}