我想使用graphql类型的系统语言来创建一个可以用于我的应用程序的模式。在应用程序本身,我想挂钩解析器。将类型系统文件解析为有效的ast.Document是没有问题的
func parseSchemaToAST(t *testing.T, globalSchemaFile string) *ast.Document {
buffer, err := ioutil.ReadFile(globalSchemaFile)
if err != nil {
t.Fatalf("Error loading global schema file %v", err)
}
astDoc, err := parser.Parse(parser.ParseParams{
Source: string(buffer),
Options: parser.ParseOptions{
NoLocation: true,
},
})
if err != nil {
t.Fatalf("Parse failed: %v", err)
}
return astDoc
}
我也可以将这个ast.Document转换回类型系统语言。 (通过graphql / language / printer)但是我应该如何从ast.Document转换为graphql.Schema?在graphql-js实现中,我发现了一个带有签名
的有用函数function buildASTSchema(ast: Document): GraphQLSchema
graphql-go对应的是什么。我想避免自定义实现