...

Source file src/github.com/vektah/gqlparser/v2/gqlparser.go

Documentation: github.com/vektah/gqlparser/v2

     1  package gqlparser
     2  
     3  import (
     4  	"github.com/vektah/gqlparser/v2/ast"
     5  	"github.com/vektah/gqlparser/v2/gqlerror"
     6  	"github.com/vektah/gqlparser/v2/parser"
     7  	"github.com/vektah/gqlparser/v2/validator"
     8  
     9  	// Blank import is used to load up the validator rules.
    10  	_ "github.com/vektah/gqlparser/v2/validator/rules"
    11  )
    12  
    13  func LoadSchema(str ...*ast.Source) (*ast.Schema, error) {
    14  	schema, err := validator.LoadSchema(append([]*ast.Source{validator.Prelude}, str...)...)
    15  	gqlErr, ok := err.(*gqlerror.Error)
    16  	if ok {
    17  		return schema, gqlErr
    18  	}
    19  	if err != nil {
    20  		return schema, gqlerror.Wrap(err)
    21  	}
    22  	return schema, nil
    23  }
    24  
    25  func MustLoadSchema(str ...*ast.Source) *ast.Schema {
    26  	s, err := validator.LoadSchema(append([]*ast.Source{validator.Prelude}, str...)...)
    27  	if err != nil {
    28  		panic(err)
    29  	}
    30  	return s
    31  }
    32  
    33  func LoadQuery(schema *ast.Schema, str string) (*ast.QueryDocument, gqlerror.List) {
    34  	query, err := parser.ParseQuery(&ast.Source{Input: str})
    35  	if err != nil {
    36  		gqlErr, ok := err.(*gqlerror.Error)
    37  		if ok {
    38  			return nil, gqlerror.List{gqlErr}
    39  		}
    40  		return nil, gqlerror.List{gqlerror.Wrap(err)}
    41  	}
    42  	errs := validator.Validate(schema, query)
    43  	if len(errs) > 0 {
    44  		return nil, errs
    45  	}
    46  
    47  	return query, nil
    48  }
    49  
    50  func MustLoadQuery(schema *ast.Schema, str string) *ast.QueryDocument {
    51  	q, err := LoadQuery(schema, str)
    52  	if err != nil {
    53  		panic(err)
    54  	}
    55  	return q
    56  }
    57  

View as plain text