#surrealdb #rpc #websocket #async-client #client

surreal-simple-client

SurrealDB 的 RPC 端点的异步 Rust 客户端

4 个版本

0.2.0 2022年10月25日
0.1.2 2022年10月5日
0.1.1 2022年10月5日
0.1.0 2022年10月5日

#2654数据库接口

Download history 5/week @ 2024-03-20 70/week @ 2024-03-27 8/week @ 2024-04-03 1/week @ 2024-04-24 89/week @ 2024-06-05 19/week @ 2024-06-12 1/week @ 2024-07-03

每月 109 次下载

MIT 许可证

19KB
315

SurrealDB 的 RPC 端点的异步 Rust 客户端

这个包作为异步 Rust 客户端的临时完整实现,通过 RPC 端点连接到远程 SurrealDB 实例,直到官方 SurrealDB 客户端包发布。

这个包旨在用于 Rust 后端,并在 WASM 环境中没有进行测试。 可能根本无法工作

示例

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
  let mut client = SurrealClient::new("ws://127.0.0.1:8000/rpc")
    .await
    .expect("RPC handshake error");

  client.signin("root", "root").await.expect("Signin error");
  client.use_namespace("my_namespace", "my_namespace").await.expect("Namespace error");

  client.send_query("create User set username = $username".to_owned(), json!({ "username": "John" }),)
    .await
    .unwrap();

  let some_user: Option<User> = client.find_one("select * from User".to_owned(), Value::Null)
    .await
    .unwrap();

  if let Some(user) = some_user {
    print!("found user: {:?}", user);
  }
}

SurrealClient 类型提供了以下实用函数:

  • 发送查询以获取原始、未解析的响应:client.send_query()
  • 发送查询并从响应中获取类型为 <T> 的第一个元素:client.find_one()
  • 发送查询并从响应中获取类型为 <T> 的多个元素,形式为 Vec<T>client.find_many()

完整的示例可以在 ./tests 目录中找到。

运行测试

测试需要本地运行 SurrealDB 实例,已创建 justfile 以允许任何人使用 just db 命令启动内存中的实例。

如果未安装 just,则以下命令将有效:

surreal start --log debug --user root --pass root memory

然后使用以下命令运行测试

cargo test

依赖项

~7–18MB
~271K SLoC