2 个不稳定版本

0.2.0 2020 年 11 月 21 日
0.1.0 2019 年 11 月 24 日

#1139 in 硬件支持

MIT 许可证

55KB
1K SLoC

raio

Crates.io Docs.io

一个有偏见的 Rust 异步 Bolt 协议 客户端实现 🦀。

支持的 Bolt 版本 4.1, 4.0

⚠️ 这是 raio-0.1.0 的重写。无法进行迁移。

⚠️ 此包尚未证明几乎没有错误。

⚠️ 注意,此包基于规范,而非其他驱动程序。它是更大项目的一部分,因此未来可能会出现重大变化,并且它是有偏见的。

packs 包驱动 PackStream 部分。

用法

高级入口点是 Client,它提供了运行查询和打开事务的功能。它附带一个连接池来处理异步操作。

use raio::client::{Client, ClientConfig};
use raio::client::auth::Basic;
use raio::client::error::ClientError;
use raio::messaging::query::Query;

#[async_std::test]
pub async fn auto_commit_simple() -> Result<(), ClientError> {
    let auth = Basic::new("neo4j", "mastertest");
    let client =
        Client::create(
            "localhost:7687",
            auth,
            ClientConfig::default("raio-rs-test", "0.2.0"));

    let mut query = Query::new("RETURN $x + 1 as x, $y as y, $b as b");
    query.param("x", 1);
    query.param("y", Some(String::from("Hello")));
    query.param("b", true);

    let result =
        client
            .query(&query)
            .await
            .expect("Error while querying.");

    let first =
        result
            .records()
            .first()
            .expect("Expected at least one result");

    assert_eq!(first.get_field_typed("x"), Some(&2));
    assert_eq!(first.get_field_typed("y"), Some(&String::from("Hello")));
    assert_eq!(first.get_field_typed("b"), Some(&true));

    Ok(())
}

贡献

欢迎您贡献!此包仍处于非常早期阶段,因此将发现并修复错误,测试相当简短,文档不足。由于我将在更大的项目中使用此包,因此最终将取得进展,但任何帮助都将受到欢迎,以便将其转化为可用且性能优良的 bolt 驱动程序。

依赖关系

~9–22MB
~260K SLoC