11个版本
0.2.8 | 2020年1月1日 |
---|---|
0.2.7 | 2020年1月1日 |
0.2.6 | 2019年11月15日 |
0.2.1 | 2019年9月9日 |
0.1.2 | 2018年12月15日 |
#2491 in 数据库接口
每月 25 次下载
1.5MB
5K SLoC
dgraph-rs
Rust的DGraph客户端
支持Dgraph 1.1.x
需要rustc 1.39或更高版本以支持async await。
此客户端处于开发中,不支持DGraph的许多功能,例如身份验证。
创建客户端
fn local_dgraph_client() -> DgraphClient {
let addr = "localhost";
let port = 9080;
let client = api_grpc::DgraphClient::with_client(
Arc::new(
Client::new_plain(addr, port, ClientConf {
..Default::default()
}).expect("Failed to initialize client stub")
)
);
DgraphClient::new(vec![client])
}
查询
fn main() {
let dg = local_dgraph_client();
let mut txn = dg.new_txn();
let query_res: Value = txn.query(r#"
{
q0(func: has(node_key)) {
uid
}
}
"#)
.await
.map(|res| serde_json::from_slice(&res.json))
.expect("Dgraph query failed")
.expect("Json deserialize failed");
}
修改
fn main() {
let dg = local_dgraph_client();
let mu = api::Mutation {
set_nquads: br#"
uid(p) <node_key> "{453120d4-5c9f-43f6-b7af-28b376b3a993}" .
uid(p) <process_name> "foo.exe" ."#.to_vec(),
..Default::default()
};
let txn = dg.new_txn();
txn.mutate(mu)
.await
.expect("Request to dgraph failed");
}
更新插入
fn main() {
let dg = local_dgraph_client();
let query = r#"
{
p as var(func: eq(node_key, "{453120d4-5c9f-43f6-b7af-28b376b3a993}"))
}
"#;
let mu = api::Mutation {
set_nquads: br#"
uid(p) <node_key> "{453120d4-5c9f-43f6-b7af-28b376b3a993}" .
uid(p) <process_name> "foo.exe" ."#.to_vec(),
..Default::default()
};
let txn = dg.new_txn();
txn.upsert(query, mu)
.await
.expect("Request to dgraph failed");
}
运行测试
测试需要本地dgraph服务器,版本1.1.0或更高。
依赖项
~12MB
~206K SLoC