gqlparser.go

 1package gqlparser
 2
 3import (
 4	"github.com/vektah/gqlparser/ast"
 5	"github.com/vektah/gqlparser/gqlerror"
 6	"github.com/vektah/gqlparser/parser"
 7	"github.com/vektah/gqlparser/validator"
 8	_ "github.com/vektah/gqlparser/validator/rules"
 9)
10
11func LoadSchema(str ...*ast.Source) (*ast.Schema, *gqlerror.Error) {
12	return validator.LoadSchema(append([]*ast.Source{validator.Prelude}, str...)...)
13}
14
15func MustLoadSchema(str ...*ast.Source) *ast.Schema {
16	s, err := validator.LoadSchema(append([]*ast.Source{validator.Prelude}, str...)...)
17	if err != nil {
18		panic(err)
19	}
20	return s
21}
22
23func LoadQuery(schema *ast.Schema, str string) (*ast.QueryDocument, gqlerror.List) {
24	query, err := parser.ParseQuery(&ast.Source{Input: str})
25	if err != nil {
26		return nil, gqlerror.List{err}
27	}
28	errs := validator.Validate(schema, query)
29	if errs != nil {
30		return nil, errs
31	}
32
33	return query, nil
34}
35
36func MustLoadQuery(schema *ast.Schema, str string) *ast.QueryDocument {
37	q, err := LoadQuery(schema, str)
38	if err != nil {
39		panic(err)
40	}
41	return q
42}