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 在 数据库接口 中
每月 109 次下载
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