Documentation ¶
Index ¶
- type ID
- type LoggedField
- type LoggedOperation
- type Response
- type Schema
- func (s *Schema) Exec(ctx context.Context, queryString string, operationName string, ...) *Response
- func (s *Schema) Inspect() *introspection.Schema
- func (s *Schema) Subscribe(ctx context.Context, queryString string, operationName string, ...) (<-chan interface{}, error)
- func (s *Schema) ToJSON() ([]byte, error)
- func (s *Schema) Validate(queryString string) []*errors.QueryError
- func (s *Schema) ValidateAndLog(queryString string, variables map[string]interface{}) ([]*errors.QueryError, []LoggedOperation)
- type SchemaOpt
- func DisableIntrospection() SchemaOpt
- func Logger(logger log.Logger) SchemaOpt
- func MaxDepth(n int) SchemaOpt
- func MaxParallelism(n int) SchemaOpt
- func Tracer(tracer trace.Tracer) SchemaOpt
- func UseFieldResolvers() SchemaOpt
- func UseStringDescriptions() SchemaOpt
- func ValidationTracer(tracer trace.ValidationTracer) SchemaOpt
- type Time
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ID ¶
type ID string
ID represents GraphQL's "ID" scalar type. A custom type may be used instead.
func (ID) ImplementsGraphQLType ¶
func (ID) MarshalJSON ¶
func (*ID) UnmarshalGraphQL ¶
type LoggedField ¶
LoggedField represents a summary of a field.
type LoggedOperation ¶
type LoggedOperation struct { Name string `json:",omitempty"` Type query.OperationType Variables map[string]string `json:",omitempty"` Fields []LoggedField `json:",omitempty"` }
LoggedOperation represents a summary of an operation suitable for concise telemetry, for example in a web server context.
type Response ¶
type Response struct { Errors []*errors.QueryError `json:"errors,omitempty"` Data json.RawMessage `json:"data,omitempty"` Extensions map[string]interface{} `json:"extensions,omitempty"` }
Response represents a typical response of a GraphQL server. It may be encoded to JSON directly or it may be further processed to a custom response type, for example to include custom error data. Errors are intentionally serialized first based on the advice in https://github.com/facebook/graphql/commit/7b40390d48680b15cb93e02d46ac5eb249689876#diff-757cea6edf0288677a9eea4cfc801d87R107
type Schema ¶
type Schema struct {
// contains filtered or unexported fields
}
Schema represents a GraphQL schema with an optional resolver.
func MustParseSchema ¶
MustParseSchema calls ParseSchema and panics on error.
func ParseSchema ¶
ParseSchema parses a GraphQL schema and attaches the given root resolver. It returns an error if the Go type signature of the resolvers does not match the schema. If nil is passed as the resolver, then the schema can not be executed, but it may be inspected (e.g. with ToJSON).
func (*Schema) Exec ¶
func (s *Schema) Exec(ctx context.Context, queryString string, operationName string, variables map[string]interface{}) *Response
Exec executes the given query with the schema's resolver. It panics if the schema was created without a resolver. If the context get cancelled, no further resolvers will be called and a the context error will be returned as soon as possible (not immediately).
func (*Schema) Inspect ¶
func (s *Schema) Inspect() *introspection.Schema
Inspect allows inspection of the given schema.
func (*Schema) Subscribe ¶
func (s *Schema) Subscribe(ctx context.Context, queryString string, operationName string, variables map[string]interface{}) (<-chan interface{}, error)
Subscribe returns a response channel for the given subscription with the schema's resolver. It returns an error if the schema was created without a resolver. If the context gets cancelled, the response channel will be closed and no further resolvers will be called. The context error will be returned as soon as possible (not immediately).
func (*Schema) Validate ¶
func (s *Schema) Validate(queryString string) []*errors.QueryError
Validate validates the given query with the schema.
func (*Schema) ValidateAndLog ¶
func (s *Schema) ValidateAndLog(queryString string, variables map[string]interface{}) ([]*errors.QueryError, []LoggedOperation)
ValidateAndLog validates the query and simultaneously produces a loggable summary of the operations it contains.
type SchemaOpt ¶
type SchemaOpt func(*Schema)
SchemaOpt is an option to pass to ParseSchema or MustParseSchema.
func DisableIntrospection ¶
func DisableIntrospection() SchemaOpt
DisableIntrospection disables introspection queries.
func Logger ¶
Logger is used to log panics during query execution. It defaults to exec.DefaultLogger.
func MaxDepth ¶
MaxDepth specifies the maximum field nesting depth in a query. The default is 0 which disables max depth checking.
func MaxParallelism ¶
MaxParallelism specifies the maximum number of resolvers per request allowed to run in parallel. The default is 10.
func UseFieldResolvers ¶
func UseFieldResolvers() SchemaOpt
UseFieldResolvers specifies whether to use struct field resolvers
func UseStringDescriptions ¶
func UseStringDescriptions() SchemaOpt
UseStringDescriptions enables the usage of double quoted and triple quoted strings as descriptions as per the June 2018 spec https://facebook.github.io/graphql/June2018/. When this is not enabled, comments are parsed as descriptions instead.
func ValidationTracer ¶
func ValidationTracer(tracer trace.ValidationTracer) SchemaOpt
ValidationTracer is used to trace validation errors. It defaults to trace.NoopValidationTracer.
type Time ¶
Time is a custom GraphQL type to represent an instant in time. It has to be added to a schema via "scalar Time" since it is not a predeclared GraphQL type like "ID".
func (Time) ImplementsGraphQLType ¶
ImplementsGraphQLType maps this custom Go type to the graphql scalar type in the schema.
func (Time) MarshalJSON ¶
MarshalJSON is a custom marshaler for Time
This function will be called whenever you query for fields that use the Time type
func (*Time) UnmarshalGraphQL ¶
UnmarshalGraphQL is a custom unmarshaler for Time
This function will be called whenever you use the time scalar as an input
Source Files ¶
Directories ¶
Path | Synopsis |
---|---|
example
|
|
caching/cache
Package cache implements caching of GraphQL requests by allowing resolvers to provide hints about their cacheability, which can be used by the transport handlers (e.g.
|
Package cache implements caching of GraphQL requests by allowing resolvers to provide hints about their cacheability, which can be used by the transport handlers (e.g. |
starwars
Package starwars provides a example schema and resolver based on Star Wars characters.
|
Package starwars provides a example schema and resolver based on Star Wars characters. |
internal
|
|