6个版本 (重大更新)
0.5.0 | 2021年11月12日 |
---|---|
0.4.1 | 2021年11月8日 |
0.3.0 | 2021年11月5日 |
0.2.0 | 2021年11月3日 |
0.1.0 | 2021年10月26日 |
#1460 in 过程宏
40KB
890 行
ConfQL
这是一个将结构化yaml转换为GraphQL服务的低摩擦方式。
您应该首先查看源代码仓库中的快速入门 示例。在那里,您将找到一种仅使用快速容器构建对您的模式进行容器化的方法,并使用数据目录挂载运行。
此库的客户端界面基本上就是过程宏[graphql_schema_from_file]。
示例
use confql::graphql_schema;
use indoc::indoc;
use juniper::{graphql_value, EmptyMutation, EmptySubscription};
use test_files::TestFiles;
// In practice you'll more likely use the `graphql_schema_from_file` macro
// but this macro is nice for tests.
graphql_schema!{
type Alien {
name: String! @confql(arrayIdentifier: true)
size: Float!
}
type Query {
customers: [Alien!]!
}
schema {
query: Query
}
};
// We have some types generated to play with
let _mork = Alien {
name: "Mork".to_string(),
size: 12.0
};
// And juniper can execute, resolving against files
// Assemble some demo data on the filesystem
let mocks = TestFiles::new();
mocks.file(
"customers/Paul.yml",
indoc! {"
---
size: 9.5
"},
);
// The `Ctx` struct has been generated for us, implementing
// `juniper::Context`. All it needs to initialize is a `PathBuf`
// pointing at the root of the data directory.
let ctx = Ctx::from(mocks.path().to_path_buf());
// Run the executor.
let (res, _errors) = juniper::execute_sync(
indoc!{"
query {
customers {
name
size
}
}
"},
None,
&Schema::new(Query, EmptyMutation::new(), EmptySubscription::new()),
&juniper::Variables::new(),
&ctx,
)
.unwrap();
// Ensure the value matches.
assert_eq!(
res,
graphql_value!({
"customers": [
{
"name": "Paul",
"size": 9.5
}
]
})
);
当前版本: 0.5.0
许可:MIT
依赖项
~12MB
~266K SLoC