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 过程宏

MIT许可

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