Documentation
¶
Overview ¶
Package rocket provides Apollo GraphQL-like patterns for Go Bringing TypeScript developer experience to Golang GraphQL development
Index ¶
- Constants
- func DefaultFieldResolver(p ResolveParams) (interface{}, error)
- func Handler(schema *Schema) http.HandlerFunc
- func PlaygroundHandler(endpoint string) http.HandlerFunc
- func PlaygroundHandlerWithType(endpoint string, playgroundType PlaygroundType) http.HandlerFunc
- type Config
- type Error
- type FieldResolveFn
- type ModuleResolvers
- type OrderedMap
- type PlaygroundType
- type Request
- type ResolveInfo
- type ResolveParams
- type ResolverRegistry
- type Result
- type Schema
- type SchemaCompiler
Constants ¶
const (
DefaultPreserveOrder = true
)
Config defaults
Variables ¶
This section is empty.
Functions ¶
func DefaultFieldResolver ¶
func DefaultFieldResolver(p ResolveParams) (interface{}, error)
DefaultFieldResolver automatically resolves struct fields to GraphQL fields This is similar to Apollo's default field resolver in TypeScript It uses reflection to map GraphQL field names to Go struct fields
func Handler ¶
func Handler(schema *Schema) http.HandlerFunc
Handler creates an HTTP handler for GraphQL requests Works with both net/http and Gin (via gin.WrapH)
func PlaygroundHandler ¶
func PlaygroundHandler(endpoint string) http.HandlerFunc
PlaygroundHandler creates an HTTP handler that serves a GraphQL playground Uses Apollo Sandbox by default (most modern and stable)
func PlaygroundHandlerWithType ¶
func PlaygroundHandlerWithType(endpoint string, playgroundType PlaygroundType) http.HandlerFunc
PlaygroundHandlerWithType creates a playground handler with a specific type
Types ¶
type Config ¶
type Config struct {
SchemaPath string // Path to the compiled schema.graphql file
EnablePlayground bool // Enable GraphQL playground (default: false)
}
Config holds configuration for building a GraphQL schema
type Error ¶
type Error struct {
Message string `json:"message"`
Path []interface{} `json:"path,omitempty"`
}
Error represents a GraphQL error
type FieldResolveFn ¶
type FieldResolveFn func(p ResolveParams) (interface{}, error)
FieldResolveFn is a function that resolves a field value
type ModuleResolvers ¶
type ModuleResolvers interface {
QueryResolvers() map[string]FieldResolveFn
MutationResolvers() map[string]FieldResolveFn
TypeResolvers() map[string]map[string]FieldResolveFn
}
ModuleResolvers is the interface that all module resolvers must implement This is similar to how you export resolvers in TypeScript Apollo
type OrderedMap ¶
type OrderedMap struct {
// contains filtered or unexported fields
}
OrderedMap preserves insertion order for JSON marshaling
func (*OrderedMap) Get ¶
func (m *OrderedMap) Get(key string) interface{}
Get retrieves a value by key
func (*OrderedMap) Keys ¶
func (m *OrderedMap) Keys() []string
Keys returns all keys in insertion order
func (*OrderedMap) MarshalJSON ¶
func (m *OrderedMap) MarshalJSON() ([]byte, error)
MarshalJSON implements json.Marshaler to preserve order
func (*OrderedMap) Set ¶
func (m *OrderedMap) Set(key string, value interface{})
Set adds or updates a key-value pair
type PlaygroundType ¶
type PlaygroundType string
PlaygroundType determines which playground interface to use
const ( PlaygroundTypeApolloSandbox PlaygroundType = "apollo" // Apollo Sandbox (recommended) PlaygroundTypeGraphiQL PlaygroundType = "graphiql" // GraphiQL (stable) PlaygroundTypePlayground PlaygroundType = "playground" // GraphQL Playground (legacy) )
type Request ¶
type Request struct {
Query string `json:"query"`
Variables map[string]interface{} `json:"variables"`
OperationName string `json:"operationName"`
}
Request represents a GraphQL HTTP request
type ResolveInfo ¶
type ResolveInfo struct {
FieldName string
Path []string
ParentType string
ReturnType string
SelectionSet interface{} // Will be wundergraph AST selection set
}
ResolveInfo contains metadata about the field being resolved
type ResolveParams ¶
type ResolveParams struct {
Source interface{}
Args map[string]interface{}
Context context.Context
Info ResolveInfo
}
ResolveParams contains all the information for resolving a field
type ResolverRegistry ¶
type ResolverRegistry struct {
Query map[string]FieldResolveFn
Mutation map[string]FieldResolveFn
Types map[string]map[string]FieldResolveFn
}
ResolverRegistry holds all resolvers stitched together Similar to how Apollo combines resolvers from different modules
func NewResolverRegistry ¶
func NewResolverRegistry(modules ...ModuleResolvers) *ResolverRegistry
NewResolverRegistry creates a new registry by merging module resolvers This is like:
export const resolvers = {
Query: { ...userQueries, ...orgQueries },
Mutation: { ...userMutations, ...orgMutations }
}
func (*ResolverRegistry) GetMutationResolver ¶
func (r *ResolverRegistry) GetMutationResolver(name string) (FieldResolveFn, bool)
GetMutationResolver returns a mutation resolver by name
func (*ResolverRegistry) GetQueryResolver ¶
func (r *ResolverRegistry) GetQueryResolver(name string) (FieldResolveFn, bool)
GetQueryResolver returns a query resolver by name
func (*ResolverRegistry) GetTypeResolver ¶
func (r *ResolverRegistry) GetTypeResolver(typeName, fieldName string) (FieldResolveFn, bool)
GetTypeResolver returns a type's field resolver
type Result ¶
type Result struct {
Data interface{} `json:"data,omitempty"`
Errors []Error `json:"errors,omitempty"`
}
Result represents the result of a GraphQL operation
type Schema ¶
type Schema struct {
// contains filtered or unexported fields
}
Schema represents a compiled and executable GraphQL schema
func BuildSchema ¶
func BuildSchema(config Config, modules ...ModuleResolvers) (*Schema, error)
BuildSchema builds an executable GraphQL schema from .graphql file and module resolvers This is the main entry point for Rocket - similar to makeExecutableSchema in Apollo
type SchemaCompiler ¶
type SchemaCompiler struct {
// contains filtered or unexported fields
}
SchemaCompiler compiles multiple .graphql files into a single schema
func NewSchemaCompiler ¶
func NewSchemaCompiler(sourceDir, outputFile string) *SchemaCompiler
NewSchemaCompiler creates a new schema compiler
func (*SchemaCompiler) Compile ¶
func (c *SchemaCompiler) Compile() error
Compile finds all .graphql files and concatenates them into a single schema
func (*SchemaCompiler) CompileIfNeeded ¶
func (c *SchemaCompiler) CompileIfNeeded() (bool, error)
CompileIfNeeded compiles the schema only if source files are newer than output