starwars

package
v0.4.4 Latest Latest
Warning

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

Go to latest
Published: Aug 21, 2018 License: MIT Imports: 13 Imported by: 0

README

starwars example

This server demonstrates a few advanced features of graphql:

  • connections
  • unions
  • interfaces
  • enums

to run this server

go run ./example/starwars/server/server.go

and open http://localhost:8080 in your browser

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewExecutableSchema

func NewExecutableSchema(cfg Config) graphql.ExecutableSchema

NewExecutableSchema creates an ExecutableSchema from the ResolverRoot interface.

Types

type Character

type Character interface{}

type CharacterFields

type CharacterFields struct {
	ID        string
	Name      string
	FriendIds []string
	AppearsIn []Episode
}

type Config

type Config struct {
	Resolvers  ResolverRoot
	Directives DirectiveRoot
}

func NewResolver

func NewResolver() Config

type DirectiveRoot

type DirectiveRoot struct {
}

type Droid

type Droid struct {
	CharacterFields
	PrimaryFunction string
}

type DroidResolver

type DroidResolver interface {
	Friends(ctx context.Context, obj *Droid) ([]Character, error)
	FriendsConnection(ctx context.Context, obj *Droid, first *int, after *string) (FriendsConnection, error)
}

type Episode

type Episode string
const (
	EpisodeNewhope Episode = "NEWHOPE"
	EpisodeEmpire  Episode = "EMPIRE"
	EpisodeJedi    Episode = "JEDI"
)

func (Episode) IsValid

func (e Episode) IsValid() bool

func (Episode) MarshalGQL

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

func (Episode) String

func (e Episode) String() string

func (*Episode) UnmarshalGQL

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

type FriendsConnection

type FriendsConnection struct {
	// contains filtered or unexported fields
}

func (*FriendsConnection) PageInfo

func (f *FriendsConnection) PageInfo() PageInfo

func (*FriendsConnection) TotalCount

func (f *FriendsConnection) TotalCount() int

type FriendsConnectionResolver

type FriendsConnectionResolver interface {
	Edges(ctx context.Context, obj *FriendsConnection) ([]FriendsEdge, error)
	Friends(ctx context.Context, obj *FriendsConnection) ([]Character, error)
}

type FriendsEdge

type FriendsEdge struct {
	Cursor string    `json:"cursor"`
	Node   Character `json:"node"`
}

type Human

type Human struct {
	CharacterFields
	StarshipIds []string

	Mass float64
	// contains filtered or unexported fields
}

func (*Human) Height

func (h *Human) Height(unit LengthUnit) float64

type HumanResolver

type HumanResolver interface {
	Friends(ctx context.Context, obj *Human) ([]Character, error)
	FriendsConnection(ctx context.Context, obj *Human, first *int, after *string) (FriendsConnection, error)

	Starships(ctx context.Context, obj *Human) ([]Starship, error)
}

type LengthUnit

type LengthUnit string
const (
	LengthUnitMeter LengthUnit = "METER"
	LengthUnitFoot  LengthUnit = "FOOT"
)

func (LengthUnit) IsValid

func (e LengthUnit) IsValid() bool

func (LengthUnit) MarshalGQL

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

func (LengthUnit) String

func (e LengthUnit) String() string

func (*LengthUnit) UnmarshalGQL

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

type MutationResolver

type MutationResolver interface {
	CreateReview(ctx context.Context, episode Episode, review Review) (*Review, error)
}

type PageInfo

type PageInfo struct {
	StartCursor string `json:"startCursor"`
	EndCursor   string `json:"endCursor"`
	HasNextPage bool   `json:"hasNextPage"`
}

type QueryResolver

type QueryResolver interface {
	Hero(ctx context.Context, episode Episode) (Character, error)
	Reviews(ctx context.Context, episode Episode, since *time.Time) ([]Review, error)
	Search(ctx context.Context, text string) ([]SearchResult, error)
	Character(ctx context.Context, id string) (Character, error)
	Droid(ctx context.Context, id string) (*Droid, error)
	Human(ctx context.Context, id string) (*Human, error)
	Starship(ctx context.Context, id string) (*Starship, error)
}

type Resolver

type Resolver struct {
	// contains filtered or unexported fields
}

func (*Resolver) Droid

func (r *Resolver) Droid() DroidResolver

func (*Resolver) FriendsConnection

func (r *Resolver) FriendsConnection() FriendsConnectionResolver

func (*Resolver) Human

func (r *Resolver) Human() HumanResolver

func (*Resolver) Mutation

func (r *Resolver) Mutation() MutationResolver

func (*Resolver) Query

func (r *Resolver) Query() QueryResolver

func (*Resolver) Starship

func (r *Resolver) Starship() StarshipResolver

type ResolverRoot

type ResolverRoot interface {
	Droid() DroidResolver
	FriendsConnection() FriendsConnectionResolver
	Human() HumanResolver
	Mutation() MutationResolver
	Query() QueryResolver
	Starship() StarshipResolver
}

type Review

type Review struct {
	Stars      int
	Commentary *string
	Time       time.Time
}

func UnmarshalReviewInput

func UnmarshalReviewInput(v interface{}) (Review, error)

type SearchResult

type SearchResult interface{}

type Starship

type Starship struct {
	ID      string  `json:"id"`
	Name    string  `json:"name"`
	Length  float64 `json:"length"`
	History [][]int `json:"history"`
}

type StarshipResolver

type StarshipResolver interface {
	Length(ctx context.Context, obj *Starship, unit LengthUnit) (float64, error)
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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