codegen

package
v0.17.56-fork2 Latest Latest
Warning

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

Go to latest
Published: Nov 12, 2024 License: MIT Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func GenerateCode added in v0.17.57

func GenerateCode(data *Data) error

Types

type ArgSet added in v0.17.57

type ArgSet struct {
	Args     []*FieldArgument
	FuncDecl string
}

type AugmentedSource added in v0.17.57

type AugmentedSource struct {
	// path relative to Config.Exec.Filename
	RelativePath string
	Embeddable   bool
	BuiltIn      bool
	Source       string
}

AugmentedSource contains extra information about graphql schema files which is not known directly from the Config.Sources data

type Data added in v0.17.57

type Data struct {
	Config *config.Config
	Schema *ast.Schema
	// If a schema is broken up into multiple Data instance, each representing part of the schema,
	// AllDirectives should contain the directives for the entire schema. Directives() can
	// then be used to get the directives that were defined in this Data instance's sources.
	// If a single Data instance is used for the entire schema, AllDirectives and Directives()
	// will be identical.
	// AllDirectives should rarely be used directly.
	AllDirectives   DirectiveList
	Objects         Objects
	Inputs          Objects
	Interfaces      map[string]*Interface
	ReferencedTypes map[string]*config.TypeReference
	ComplexityRoots map[string]*Object

	QueryRoot        *Object
	MutationRoot     *Object
	SubscriptionRoot *Object
	AugmentedSources []AugmentedSource
	Plugins          []any
}

Data is a unified model of the code to be generated. Plugins may modify this structure to do things like implement resolvers or directives automatically (eg grpc, validation)

func BuildData added in v0.17.57

func BuildData(cfg *config.Config, plugins ...any) (*Data, error)

func (*Data) Args added in v0.17.57

func (d *Data) Args() map[string][]*FieldArgument

func (*Data) BuiltInDirectives added in v0.17.57

func (d *Data) BuiltInDirectives() DirectiveList

Get only the directives which should have a statically provided definition

func (*Data) Directives added in v0.17.57

func (d *Data) Directives() DirectiveList

Get only the directives which are defined in the config's sources.

func (*Data) HasEmbeddableSources added in v0.17.57

func (d *Data) HasEmbeddableSources() bool

func (*Data) UserDirectives added in v0.17.57

func (d *Data) UserDirectives() DirectiveList

Get only the directives which should have a user provided definition on server instantiation

type Directive

type Directive struct {
	*ast.DirectiveDefinition
	Name string
	Args []*FieldArgument

	config.DirectiveConfig
}

func (*Directive) ArgsFunc added in v0.5.1

func (d *Directive) ArgsFunc() string

func (*Directive) CallArgs

func (d *Directive) CallArgs() string

func (*Directive) CallName added in v0.17.57

func (d *Directive) CallName() string

func (*Directive) CallPath added in v0.17.57

func (d *Directive) CallPath() string

func (*Directive) Declaration

func (d *Directive) Declaration() string

func (*Directive) FunctionImpl added in v0.17.57

func (d *Directive) FunctionImpl() string

func (*Directive) IsBuiltIn added in v0.17.57

func (d *Directive) IsBuiltIn() bool

func (*Directive) IsLocation added in v0.17.57

func (d *Directive) IsLocation(location ...ast.DirectiveLocation) bool

IsLocation check location directive

func (*Directive) ResolveArgs added in v0.17.57

func (d *Directive) ResolveArgs(obj string, next int) string

type DirectiveList added in v0.17.57

type DirectiveList map[string]*Directive

func (DirectiveList) LocationDirectives added in v0.17.57

func (dl DirectiveList) LocationDirectives(location string) DirectiveList

LocationDirectives filter directives by location

type Field

type Field struct {
	*ast.FieldDefinition

	TypeReference    *config.TypeReference
	GoFieldType      GoFieldType      // The field type in go, if any
	GoReceiverName   string           // The name of method & var receiver in go, if any
	GoFieldName      string           // The name of the method or var in go, if any
	IsResolver       bool             // Does this field need a resolver
	Args             []*FieldArgument // A list of arguments to be passed to this field
	MethodHasContext bool             // If this is bound to a go method, does the method also take a context
	NoErr            bool             // If this is bound to a go method, does that method have an error as the second argument
	VOkFunc          bool             // If this is bound to a go method, is it of shape (interface{}, bool)
	Object           *Object          // A link back to the parent object
	Default          any              // The default value
	Stream           bool             // does this field return a channel?
	Directives       []*Directive
}

func (*Field) ArgsFunc added in v0.5.1

func (f *Field) ArgsFunc() string

func (*Field) CallArgs

func (f *Field) CallArgs() string

func (*Field) ChildFieldContextFunc added in v0.17.57

func (f *Field) ChildFieldContextFunc(name string) string

func (*Field) ComplexityArgs added in v0.5.0

func (f *Field) ComplexityArgs() string

func (*Field) ComplexitySignature added in v0.5.0

func (f *Field) ComplexitySignature() string

func (*Field) DirectiveObjName added in v0.17.57

func (f *Field) DirectiveObjName() string

func (*Field) FieldContextFunc added in v0.17.57

func (f *Field) FieldContextFunc() string

func (*Field) GoNameUnexported

func (f *Field) GoNameUnexported() string

func (*Field) GoResultName added in v0.17.57

func (f *Field) GoResultName() (string, bool)

func (*Field) HasDirectives added in v0.17.57

func (f *Field) HasDirectives() bool

func (*Field) ImplDirectives added in v0.17.57

func (f *Field) ImplDirectives() []*Directive

func (*Field) IsConcurrent

func (f *Field) IsConcurrent() bool

func (*Field) IsInputObject added in v0.17.57

func (f *Field) IsInputObject() bool

func (*Field) IsMap added in v0.17.57

func (f *Field) IsMap() bool

func (*Field) IsMethod

func (f *Field) IsMethod() bool

func (*Field) IsReserved added in v0.5.0

func (f *Field) IsReserved() bool

func (*Field) IsRoot added in v0.17.57

func (f *Field) IsRoot() bool

func (*Field) IsVariable

func (f *Field) IsVariable() bool

func (*Field) ResolverType

func (f *Field) ResolverType() string

func (*Field) ShortInvocation

func (f *Field) ShortInvocation() string

func (*Field) ShortResolverDeclaration

func (f *Field) ShortResolverDeclaration() string

func (*Field) ShortResolverSignature added in v0.17.57

func (f *Field) ShortResolverSignature(ft *goast.FuncType) string

ShortResolverSignature is identical to ShortResolverDeclaration, but respects previous naming (return) conventions, if any.

type FieldArgument

type FieldArgument struct {
	*ast.ArgumentDefinition
	TypeReference                  *config.TypeReference
	VarName                        string  // The name of the var in go
	Object                         *Object // A link back to the parent object
	Default                        any     // The default value
	Directives                     []*Directive
	Value                          any // value set in Data
	CallArgumentDirectivesWithNull bool
}

func (*FieldArgument) DirectiveObjName added in v0.17.57

func (f *FieldArgument) DirectiveObjName() string

func (*FieldArgument) ImplDirectives added in v0.17.57

func (f *FieldArgument) ImplDirectives() []*Directive

ImplDirectives get not SkipRuntime and location ARGUMENT_DEFINITION directive

func (*FieldArgument) Stream

func (f *FieldArgument) Stream() bool

type GoFieldType

type GoFieldType int
const (
	GoFieldUndefined GoFieldType = iota
	GoFieldMethod
	GoFieldVariable
	GoFieldMap
)

type Interface

type Interface struct {
	*ast.Definition
	Type         types.Type
	Implementors []InterfaceImplementor
	InTypemap    bool
}

type InterfaceImplementor

type InterfaceImplementor struct {
	*ast.Definition

	Type    types.Type
	TakeRef bool
}

func (*InterfaceImplementor) CanBeNil added in v0.17.57

func (i *InterfaceImplementor) CanBeNil() bool

type Object

type Object struct {
	*ast.Definition

	Type                     types.Type
	ResolverInterface        types.Type
	Root                     bool
	Fields                   []*Field
	Implements               []*ast.Definition
	DisableConcurrency       bool
	Stream                   bool
	Directives               []*Directive
	PointersInUnmarshalInput bool
}

func (*Object) Description added in v0.17.57

func (o *Object) Description() string

func (*Object) HasDirectives added in v0.17.57

func (o *Object) HasDirectives() bool

func (*Object) HasField added in v0.17.57

func (o *Object) HasField(name string) bool

func (*Object) HasResolvers

func (o *Object) HasResolvers() bool

func (*Object) HasUnmarshal added in v0.17.57

func (o *Object) HasUnmarshal() bool

func (*Object) Implementors

func (o *Object) Implementors() string

func (*Object) IsConcurrent added in v0.5.0

func (o *Object) IsConcurrent() bool

func (*Object) IsMap added in v0.17.57

func (o *Object) IsMap() bool

func (*Object) IsReserved added in v0.5.0

func (o *Object) IsReserved() bool

func (*Object) Reference added in v0.17.57

func (o *Object) Reference() types.Type

func (*Object) UniqueFields added in v0.17.57

func (o *Object) UniqueFields() map[string][]*Field

type Objects

type Objects []*Object

func (Objects) ByName

func (os Objects) ByName(name string) *Object

Jump to

Keyboard shortcuts

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