Skip to content

Commit

Permalink
wip related to implementing executor.execute func
Browse files Browse the repository at this point in the history
  • Loading branch information
chris-ramon committed Jul 19, 2015
1 parent e12d9d9 commit a9ec103
Show file tree
Hide file tree
Showing 5 changed files with 104 additions and 16 deletions.
22 changes: 21 additions & 1 deletion executor/executor.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import (

"github.com/chris-ramon/graphql-go/errors"
"github.com/chris-ramon/graphql-go/language/ast"
"github.com/chris-ramon/graphql-go/language/fd"
"github.com/chris-ramon/graphql-go/language/kinds"
"github.com/chris-ramon/graphql-go/language/od"
"github.com/chris-ramon/graphql-go/types"
Expand Down Expand Up @@ -47,7 +48,7 @@ func Execute(p ExecuteParams, r chan types.GraphQLResult) {
type ExecutionContext struct {
Schema types.GraphQLSchema
Result types.GraphQLResult
Fragments map[string]ast.FragmentDefinition
Fragments map[string]fd.FragmentDefinition
Root map[string]interface{}
Operation od.OperationDefinition
Variables map[string]interface{}
Expand Down Expand Up @@ -144,5 +145,24 @@ func buildExecutionContext(p BuildExecutionCtxParams) (eCtx ExecutionContext) {
})
return eCtx
}
var opName string
if p.OperationName == "" {
var i int
for k, _ := range operations {
opName = k
if i == 0 {
break
}
}
p.OperationName = opName
}
//TODO: validate if operations[opName] is an empty struct
//var operation ast.Definition
//if (operations[opName].(od.OperationDefinition) == od.OperationDefinition{}) || (operations[opName].(fd.FragmentDefinition) == fd.FragmentDefinition{}) {
//p.Result.Errors = append(p.Result.Errors, errors.GraphQLFormattedError{
//Message: fmt.Sprintf("Unknown operation name: %s", opName),
//})
//return eCtx
//}
return eCtx
}
23 changes: 23 additions & 0 deletions executor/values.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package executor

import (
"github.com/chris-ramon/graphql-go/language/ast"
"github.com/chris-ramon/graphql-go/types"
)

//export function getVariableValues(
//schema: GraphQLSchema,
//definitionASTs: Array<VariableDefinition>,
//inputs: { [key: string]: any }
//): { [key: string]: any } {
//return definitionASTs.reduce((values, defAST) => {
//var varName = defAST.variable.name.value;
//values[varName] = getVariableValue(schema, defAST, inputs[varName]);
//return values;
//}, {});
//}

func GetVariableValues(schema types.GraphQLSchema, definitionASTs []ast.VariableDefinition, inputs map[string]interface{}) (r map[string]interface{}) {
//TODO: use reduce
return r
}
16 changes: 1 addition & 15 deletions language/ast/ast.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ type Definition interface {
GetOperation() string
GetName() Name
GetVariableDefinitions() []VariableDefinition
GetTypeCondition() Name
GetDirectives() []Directive
GetSelectionSet() SelectionSet
}
Expand Down Expand Up @@ -80,21 +81,6 @@ func NewDirective() *Directive {
}
}

type FragmentDefinition struct {
Kind string
Loc Location
Name Name
TypeCondition Name
Directives []Directive
SelectionSet SelectionSet
}

func NewFragmentDefinition() *FragmentDefinition {
return &FragmentDefinition{
Kind: "FragmentDefinition",
}
}

type Location struct {
Start int
End int
Expand Down
54 changes: 54 additions & 0 deletions language/fd/fd.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package fd

import (
. "github.com/chris-ramon/graphql-go/language/ast"
)

type FragmentDefinition struct {
Kind string
Loc Location
Operation string
Name Name
VariableDefinitions []VariableDefinition
TypeCondition Name
Directives []Directive
SelectionSet SelectionSet
}

func NewFragmentDefinition() *FragmentDefinition {
return &FragmentDefinition{
Kind: "FragmentDefinition",
}
}

func GetKind(fd *FragmentDefinition) string {
return fd.Kind
}

func GetLoc(fd *FragmentDefinition) Location {
return fd.Loc
}

func GetOperation(fd *FragmentDefinition) string {
return fd.Operation
}

func GetName(fd *FragmentDefinition) Name {
return fd.Name
}

func GetTypeCondition(fd *FragmentDefinition) Name {
return fd.TypeCondition
}

func GetVariableDefinitions(fd *FragmentDefinition) []VariableDefinition {
return fd.VariableDefinitions
}

func GetDirectives(fd *FragmentDefinition) []Directive {
return fd.Directives
}

func GetSelectionSet(fd *FragmentDefinition) SelectionSet {
return fd.SelectionSet
}
5 changes: 5 additions & 0 deletions language/od/od.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ type OperationDefinition struct {
Operation string
Name Name
VariableDefinitions []VariableDefinition
TypeCondition Name
Directives []Directive
SelectionSet SelectionSet
}
Expand All @@ -30,6 +31,10 @@ func GetName(op *OperationDefinition) Name {
return op.Name
}

func GetTypeCondition(op *OperationDefinition) Name {
return op.TypeCondition
}

func GetVariableDefinitions(op *OperationDefinition) []VariableDefinition {
return op.VariableDefinitions
}
Expand Down

0 comments on commit a9ec103

Please sign in to comment.