diff options
Diffstat (limited to 'vendor/github.com/graphql-go/graphql/graphql.go')
-rw-r--r-- | vendor/github.com/graphql-go/graphql/graphql.go | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/vendor/github.com/graphql-go/graphql/graphql.go b/vendor/github.com/graphql-go/graphql/graphql.go new file mode 100644 index 00000000..c9bdb168 --- /dev/null +++ b/vendor/github.com/graphql-go/graphql/graphql.go @@ -0,0 +1,63 @@ +package graphql + +import ( + "context" + + "github.com/graphql-go/graphql/gqlerrors" + "github.com/graphql-go/graphql/language/parser" + "github.com/graphql-go/graphql/language/source" +) + +type Params struct { + // The GraphQL type system to use when validating and executing a query. + Schema Schema + + // A GraphQL language formatted string representing the requested operation. + RequestString string + + // The value provided as the first argument to resolver functions on the top + // level type (e.g. the query object type). + RootObject map[string]interface{} + + // A mapping of variable name to runtime value to use for all variables + // defined in the requestString. + VariableValues map[string]interface{} + + // The name of the operation to use if requestString contains multiple + // possible operations. Can be omitted if requestString contains only + // one operation. + OperationName string + + // Context may be provided to pass application-specific per-request + // information to resolve functions. + Context context.Context +} + +func Do(p Params) *Result { + source := source.NewSource(&source.Source{ + Body: []byte(p.RequestString), + Name: "GraphQL request", + }) + AST, err := parser.Parse(parser.ParseParams{Source: source}) + if err != nil { + return &Result{ + Errors: gqlerrors.FormatErrors(err), + } + } + validationResult := ValidateDocument(&p.Schema, AST, nil) + + if !validationResult.IsValid { + return &Result{ + Errors: validationResult.Errors, + } + } + + return Execute(ExecuteParams{ + Schema: p.Schema, + Root: p.RootObject, + AST: AST, + OperationName: p.OperationName, + Args: p.VariableValues, + Context: p.Context, + }) +} |