4个版本 (2个破坏性更新)
0.3.4 | 2022年10月20日 |
---|---|
0.3.0 | 2022年10月2日 |
0.2.0 | 2022年9月23日 |
0.1.0 | 2022年9月21日 |
#856 in 数据库接口
33KB
745 行
Zenode
这个项目是什么
该项目通过提供工具,以便于在p2panda节点上执行操作,实现了客户端与p2panda节点之间的抽象层。
开始之前
为了运行此项目,您首先需要安装 aquadoggo
git clone https://github.com/p2panda/aquadoggo.git
RUST_LOG=aquadoggo=info cargo run
Operator
结构是围绕p2panda库和graphql层的包装。
要创建一个新的 Operator
,请使用 Operator::default()
或 Operator::new()
。
Operator::default()
读取 ENDPOINT
环境变量,如果不存在,则使用默认端点 https://127.0.0.1:2020/graphql
。
运行以下命令以测试 Zenode
(aquadoggo必须在后台运行)
cargo test
快速入门
use zenode::{field, Operator};
use zenode::FieldType::*;
// create an Operator
let op = Operator::default();
// create a schema
let id = op.create_schema(
"POKEMON",
"Pokemon schema",
&mut [
field_def("pokemon_id", Int), // same as field("pokemon_id", "int")
field_def("pokemon_name", Str),
]
).await?;
// generate schema_id
let schema_id = format!("POKEMON_{}", id);
// create an instance
let instance_id = op.create_instance(&schema_id, &mut [
field("pokemon_id", "1"), field("pokemon_name", "Bulbasaur")
]).await?;
// update the instance
let update_id = op.update_instance(&schema_id, &instance_id, &mut [
field("pokemon_name", "Charmander")
]).await?;
// finally delete the instance
let _delete_id = op.delete_instance(&schema_id, &update_id).await?;
实验性模式构建器
let op = Operator::default();
let mut puppy_builder = SchemaBuilder::new("puppy", "Puppy schema", &op)
.field("name", Str)
.field("cuteness", Int);
puppy_builder.build().await?;
let tiramisu_id = puppy_builder
.instantiate(&mut [field("name", "Tiramisu"), field("cuteness", "200")])
.await?;
功能
- 创建模式
- 存储字段
- 存储实例
- 更新实例
- 删除实例
- 从环境变量读取端点
- 更好的字段到json转换
- 保存schema_id
- 将模式名称与schema_id链接
- 可序列化查询字符串
依赖项
~13–30MB
~452K SLoC