README

Type System Extension example

https://graphql.github.io/graphql-spec/draft/#sec-Type-System-Extensions

$ go run ./server/server.go
2018/10/25 12:46:45 connect to http://localhost:8080/ for GraphQL playground

$ curl -X POST 'http://localhost:8080/query' --data-binary '{"query":"{ todos { id text state verified } }"}'
{"data":{"todos":[{"id":"Todo:1","text":"Buy a cat food","state":"NOT_YET","verified":false},{"id":"Todo:2","text":"Check cat water","state":"DONE","verified":true},{"id":"Todo:3","text":"Check cat meal","state":"DONE","verified":true}]}}
Expand ▾ Collapse ▴

Documentation

Index

Constants

This section is empty.

Variables

View Source
var AllState = []State{
	StateNotYet,
	StateDone,
}

Functions

func EnumLogging

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

func FieldLogging

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

func InputLogging

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

func NewExecutableSchema

func NewExecutableSchema(cfg Config) graphql.ExecutableSchema

    NewExecutableSchema creates an ExecutableSchema from the ResolverRoot interface.

    func ObjectLogging

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

    func ScalarLogging

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

    func UnionLogging

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

    Types

    type ComplexityRoot

    type ComplexityRoot struct {
    	MyMutation struct {
    		CreateTodo func(childComplexity int, todo TodoInput) int
    	}
    
    	MyQuery struct {
    		Todo  func(childComplexity int, id string) int
    		Todos func(childComplexity int) int
    	}
    
    	Todo struct {
    		ID       func(childComplexity int) int
    		State    func(childComplexity int) int
    		Text     func(childComplexity int) int
    		Verified func(childComplexity int) int
    	}
    }

    type Config

    type Config struct {
    	Resolvers  ResolverRoot
    	Directives DirectiveRoot
    	Complexity ComplexityRoot
    }

    type Data

    type Data interface {
    	IsData()
    }

    type DirectiveRoot

    type DirectiveRoot struct {
    	EnumLogging      func(ctx context.Context, obj interface{}, next graphql.Resolver) (res interface{}, err error)
    	FieldLogging     func(ctx context.Context, obj interface{}, next graphql.Resolver) (res interface{}, err error)
    	InputLogging     func(ctx context.Context, obj interface{}, next graphql.Resolver) (res interface{}, err error)
    	InterfaceLogging func(ctx context.Context, obj interface{}, next graphql.Resolver) (res interface{}, err error)
    	ObjectLogging    func(ctx context.Context, obj interface{}, next graphql.Resolver) (res interface{}, err error)
    	ScalarLogging    func(ctx context.Context, obj interface{}, next graphql.Resolver) (res interface{}, err error)
    	UnionLogging     func(ctx context.Context, obj interface{}, next graphql.Resolver) (res interface{}, err error)
    }

    type MyMutationResolver

    type MyMutationResolver interface {
    	CreateTodo(ctx context.Context, todo TodoInput) (*Todo, error)
    }

    type MyQueryResolver

    type MyQueryResolver interface {
    	Todos(ctx context.Context) ([]*Todo, error)
    	Todo(ctx context.Context, id string) (*Todo, error)
    }

    type Node

    type Node interface {
    	IsNode()
    }

    type ResolverRoot

    type ResolverRoot interface {
    	MyMutation() MyMutationResolver
    	MyQuery() MyQueryResolver
    }

    func NewRootResolver

    func NewRootResolver() ResolverRoot

    type State

    type State string
    const (
    	StateNotYet State = "NOT_YET"
    	StateDone   State = "DONE"
    )

    func (State) IsValid

    func (e State) IsValid() bool

    func (State) MarshalGQL

    func (e State) MarshalGQL(w io.Writer)

    func (State) String

    func (e State) String() string

    func (*State) UnmarshalGQL

    func (e *State) UnmarshalGQL(v interface{}) error

    type Todo

    type Todo struct {
    	ID       string `json:"id"`
    	Text     string `json:"text"`
    	State    State  `json:"state"`
    	Verified bool   `json:"verified"`
    }

    func (Todo) IsData

    func (Todo) IsData()

    func (Todo) IsNode

    func (Todo) IsNode()

    type TodoInput

    type TodoInput struct {
    	Text string `json:"text"`
    }

    Directories

    Path Synopsis