graphql

package
v0.9.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 8, 2019 License: MIT Imports: 13 Imported by: 3,782

Documentation

Index

Constants

View Source
const Version = "v0.9.2"

Variables

View Source
var False = &lit{falseLit}
View Source
var Null = &lit{nullLit}
View Source
var True = &lit{trueLit}

Functions

func AddError

func AddError(ctx context.Context, err error)

AddError is a convenience method for adding an error to the current response

func AddErrorf

func AddErrorf(ctx context.Context, format string, args ...interface{})

AddErrorf is a convenience method for adding an error to the current response

func CollectAllFields added in v0.8.0

func CollectAllFields(ctx context.Context) []string

CollectAllFields returns a slice of all GraphQL field names that were selected for the current resolver context. The slice will contain the unique set of all field names requested regardless of fragment type conditions.

func DefaultDirectiveMiddleware

func DefaultDirectiveMiddleware(ctx context.Context, next Resolver) (res interface{}, err error)

func DefaultErrorPresenter

func DefaultErrorPresenter(ctx context.Context, err error) *gqlerror.Error

func DefaultRecover

func DefaultRecover(ctx context.Context, err interface{}) error

func DefaultRequestMiddleware

func DefaultRequestMiddleware(ctx context.Context, next func(ctx context.Context) []byte) []byte

func DefaultResolverMiddleware

func DefaultResolverMiddleware(ctx context.Context, next Resolver) (res interface{}, err error)

func OneShot

func OneShot(resp *Response) func() *Response

func UnmarshalAny added in v0.9.0

func UnmarshalAny(v interface{}) (interface{}, error)

func UnmarshalBoolean

func UnmarshalBoolean(v interface{}) (bool, error)

func UnmarshalFloat

func UnmarshalFloat(v interface{}) (float64, error)

func UnmarshalID

func UnmarshalID(v interface{}) (string, error)

func UnmarshalInt

func UnmarshalInt(v interface{}) (int, error)

func UnmarshalInt32 added in v0.8.0

func UnmarshalInt32(v interface{}) (int32, error)

func UnmarshalInt64 added in v0.8.0

func UnmarshalInt64(v interface{}) (int64, error)

func UnmarshalIntID added in v0.8.0

func UnmarshalIntID(v interface{}) (int, error)

func UnmarshalMap

func UnmarshalMap(v interface{}) (map[string]interface{}, error)

func UnmarshalString

func UnmarshalString(v interface{}) (string, error)

func UnmarshalTime

func UnmarshalTime(v interface{}) (time.Time, error)

func WithRequestContext

func WithRequestContext(ctx context.Context, rc *RequestContext) context.Context

func WithResolverContext

func WithResolverContext(ctx context.Context, rc *ResolverContext) context.Context

Types

type Array

type Array []Marshaler

func (Array) MarshalGQL

func (a Array) MarshalGQL(writer io.Writer)

type CollectedField

type CollectedField struct {
	*ast.Field

	Selections ast.SelectionSet
}

func CollectFields

func CollectFields(reqCtx *RequestContext, selSet ast.SelectionSet, satisfies []string) []CollectedField

CollectFields returns the set of fields from an ast.SelectionSet where all collected fields satisfy at least one of the GraphQL types passed through satisfies. Providing an empty or nil slice for satisfies will return collect all fields regardless of fragment type conditions.

func CollectFieldsCtx

func CollectFieldsCtx(ctx context.Context, satisfies []string) []CollectedField

This is just a convenient wrapper method for CollectFields

type ComplexityLimitFunc added in v0.8.2

type ComplexityLimitFunc func(ctx context.Context) int

type ErrorPresenterFunc

type ErrorPresenterFunc func(context.Context, error) *gqlerror.Error

type ExecutableSchema

type ExecutableSchema interface {
	Schema() *ast.Schema

	Complexity(typeName, fieldName string, childComplexity int, args map[string]interface{}) (int, bool)
	Query(ctx context.Context, op *ast.OperationDefinition) *Response
	Mutation(ctx context.Context, op *ast.OperationDefinition) *Response
	Subscription(ctx context.Context, op *ast.OperationDefinition) func() *Response
}

type ExtendedError

type ExtendedError interface {
	Extensions() map[string]interface{}
}

type FieldMiddleware

type FieldMiddleware func(ctx context.Context, next Resolver) (res interface{}, err error)

func ChainFieldMiddleware added in v0.8.0

func ChainFieldMiddleware(handleFunc ...FieldMiddleware) FieldMiddleware

ChainFieldMiddleware add chain by FieldMiddleware

type FieldSet added in v0.8.0

type FieldSet struct {
	Values []Marshaler
	// contains filtered or unexported fields
}

func NewFieldSet added in v0.8.0

func NewFieldSet(fields []CollectedField) *FieldSet

func (*FieldSet) Concurrently added in v0.8.0

func (m *FieldSet) Concurrently(i int, f func() Marshaler)

func (*FieldSet) Dispatch added in v0.8.0

func (m *FieldSet) Dispatch()

func (*FieldSet) MarshalGQL added in v0.8.0

func (m *FieldSet) MarshalGQL(writer io.Writer)

type Marshaler

type Marshaler interface {
	MarshalGQL(w io.Writer)
}

func MarshalAny added in v0.9.0

func MarshalAny(v interface{}) Marshaler

func MarshalBoolean

func MarshalBoolean(b bool) Marshaler

func MarshalFloat

func MarshalFloat(f float64) Marshaler

func MarshalID

func MarshalID(s string) Marshaler

func MarshalInt

func MarshalInt(i int) Marshaler

func MarshalInt32 added in v0.8.0

func MarshalInt32(i int32) Marshaler

func MarshalInt64 added in v0.8.0

func MarshalInt64(i int64) Marshaler

func MarshalIntID added in v0.8.0

func MarshalIntID(i int) Marshaler

func MarshalMap

func MarshalMap(val map[string]interface{}) Marshaler

func MarshalString

func MarshalString(s string) Marshaler

func MarshalTime

func MarshalTime(t time.Time) Marshaler

func MarshalUpload added in v0.9.0

func MarshalUpload(f Upload) Marshaler

type Mutation added in v0.8.0

type Mutation struct{}

type NopTracer added in v0.7.0

type NopTracer struct{}

func (NopTracer) EndFieldExecution added in v0.7.0

func (NopTracer) EndFieldExecution(ctx context.Context)

func (NopTracer) EndOperationExecution added in v0.7.0

func (NopTracer) EndOperationExecution(ctx context.Context)

func (NopTracer) EndOperationParsing added in v0.7.0

func (NopTracer) EndOperationParsing(ctx context.Context)

func (NopTracer) EndOperationValidation added in v0.7.0

func (NopTracer) EndOperationValidation(ctx context.Context)

func (NopTracer) StartFieldChildExecution added in v0.7.0

func (NopTracer) StartFieldChildExecution(ctx context.Context) context.Context

func (NopTracer) StartFieldExecution added in v0.7.0

func (NopTracer) StartFieldExecution(ctx context.Context, field CollectedField) context.Context

func (NopTracer) StartFieldResolverExecution added in v0.7.0

func (NopTracer) StartFieldResolverExecution(ctx context.Context, rc *ResolverContext) context.Context

func (NopTracer) StartOperationExecution added in v0.7.0

func (NopTracer) StartOperationExecution(ctx context.Context) context.Context

func (NopTracer) StartOperationParsing added in v0.7.0

func (NopTracer) StartOperationParsing(ctx context.Context) context.Context

func (NopTracer) StartOperationValidation added in v0.7.0

func (NopTracer) StartOperationValidation(ctx context.Context) context.Context

type Query added in v0.8.0

type Query struct{}

type RecoverFunc

type RecoverFunc func(ctx context.Context, err interface{}) (userMessage error)

type RequestContext

type RequestContext struct {
	RawQuery  string
	Variables map[string]interface{}
	Doc       *ast.QueryDocument

	ComplexityLimit      int
	OperationComplexity  int
	DisableIntrospection bool

	// ErrorPresenter will be used to generate the error
	// message from errors given to Error().
	ErrorPresenter      ErrorPresenterFunc
	Recover             RecoverFunc
	ResolverMiddleware  FieldMiddleware
	DirectiveMiddleware FieldMiddleware
	RequestMiddleware   RequestMiddleware
	Tracer              Tracer

	Errors gqlerror.List

	Extensions map[string]interface{}
	// contains filtered or unexported fields
}

func GetRequestContext

func GetRequestContext(ctx context.Context) *RequestContext

func NewRequestContext

func NewRequestContext(doc *ast.QueryDocument, query string, variables map[string]interface{}) *RequestContext

func (*RequestContext) Error

func (c *RequestContext) Error(ctx context.Context, err error)

Error sends an error to the client, passing it through the formatter.

func (*RequestContext) Errorf

func (c *RequestContext) Errorf(ctx context.Context, format string, args ...interface{})

Errorf sends an error string to the client, passing it through the formatter.

func (*RequestContext) GetErrors added in v0.7.0

func (c *RequestContext) GetErrors(rctx *ResolverContext) gqlerror.List

GetErrors returns a list of errors that occurred in the current field

func (*RequestContext) HasError added in v0.5.0

func (c *RequestContext) HasError(rctx *ResolverContext) bool

HasError returns true if the current field has already errored

func (*RequestContext) RegisterExtension added in v0.6.0

func (c *RequestContext) RegisterExtension(key string, value interface{}) error

RegisterExtension registers an extension, returns error if extension has already been registered

type RequestMiddleware

type RequestMiddleware func(ctx context.Context, next func(ctx context.Context) []byte) []byte

type Resolver

type Resolver func(ctx context.Context) (res interface{}, err error)

type ResolverContext

type ResolverContext struct {
	Parent *ResolverContext
	// The name of the type this field belongs to
	Object string
	// These are the args after processing, they can be mutated in middleware to change what the resolver will get.
	Args map[string]interface{}
	// The raw field
	Field CollectedField
	// The index of array in path.
	Index *int
	// The result object of resolver
	Result interface{}
	// IsMethod indicates if the resolver is a method
	IsMethod bool
}

func GetResolverContext

func GetResolverContext(ctx context.Context) *ResolverContext

func (*ResolverContext) Path

func (r *ResolverContext) Path() []interface{}

type Response

type Response struct {
	Errors     gqlerror.List          `json:"errors,omitempty"`
	Data       json.RawMessage        `json:"data"`
	Extensions map[string]interface{} `json:"extensions,omitempty"`
}

Errors are intentionally serialized first based on the advice in https://github.com/facebook/graphql/commit/7b40390d48680b15cb93e02d46ac5eb249689876#diff-757cea6edf0288677a9eea4cfc801d87R107 and https://github.com/facebook/graphql/pull/384

func ErrorResponse

func ErrorResponse(ctx context.Context, messagef string, args ...interface{}) *Response

type Subscription added in v0.8.0

type Subscription struct{}

type Tracer added in v0.7.0

type Tracer interface {
	StartOperationParsing(ctx context.Context) context.Context
	EndOperationParsing(ctx context.Context)
	StartOperationValidation(ctx context.Context) context.Context
	EndOperationValidation(ctx context.Context)
	StartOperationExecution(ctx context.Context) context.Context
	StartFieldExecution(ctx context.Context, field CollectedField) context.Context
	StartFieldResolverExecution(ctx context.Context, rc *ResolverContext) context.Context
	StartFieldChildExecution(ctx context.Context) context.Context
	EndFieldExecution(ctx context.Context)
	EndOperationExecution(ctx context.Context)
}

type Unmarshaler

type Unmarshaler interface {
	UnmarshalGQL(v interface{}) error
}

type Upload added in v0.9.0

type Upload struct {
	File     io.Reader
	Filename string
	Size     int64
}

func UnmarshalUpload added in v0.9.0

func UnmarshalUpload(v interface{}) (Upload, error)

type WriterFunc

type WriterFunc func(writer io.Writer)

func (WriterFunc) MarshalGQL

func (f WriterFunc) MarshalGQL(w io.Writer)

Directories

Path Synopsis
introspection implements the spec defined in https://github.com/facebook/graphql/blob/master/spec/Section%204%20--%20Introspection.md#schema-introspection
introspection implements the spec defined in https://github.com/facebook/graphql/blob/master/spec/Section%204%20--%20Introspection.md#schema-introspection

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL