diff options
-rw-r--r-- | graphql/resolvers.go | 7 | ||||
-rw-r--r-- | graphql/schema.go | 18 | ||||
-rw-r--r-- | graphql/types.go | 48 |
3 files changed, 66 insertions, 7 deletions
diff --git a/graphql/resolvers.go b/graphql/resolvers.go new file mode 100644 index 00000000..ef20d0f2 --- /dev/null +++ b/graphql/resolvers.go @@ -0,0 +1,7 @@ +package graphql + +import "github.com/graphql-go/graphql" + +func resolveBug(p graphql.ResolveParams) (interface{}, error) { + return "world", nil +} diff --git a/graphql/schema.go b/graphql/schema.go index f6523f03..f8fb9768 100644 --- a/graphql/schema.go +++ b/graphql/schema.go @@ -3,15 +3,19 @@ package graphql import "github.com/graphql-go/graphql" func graphqlSchema() (graphql.Schema, error) { - fields := graphql.Fields{ - "hello": &graphql.Field{ - Type: graphql.String, - Resolve: func(p graphql.ResolveParams) (interface{}, error) { - return "world", nil + + rootQuery := graphql.ObjectConfig{ + Name: "RootQuery", + Fields: graphql.Fields{ + "hello": &graphql.Field{ + Type: graphql.String, }, }, } - rootQuery := graphql.ObjectConfig{Name: "RootQuery", Fields: fields} - schemaConfig := graphql.SchemaConfig{Query: graphql.NewObject(rootQuery)} + + schemaConfig := graphql.SchemaConfig{ + Query: graphql.NewObject(rootQuery), + } + return graphql.NewSchema(schemaConfig) } diff --git a/graphql/types.go b/graphql/types.go new file mode 100644 index 00000000..edce9ea1 --- /dev/null +++ b/graphql/types.go @@ -0,0 +1,48 @@ +package graphql + +import "github.com/graphql-go/graphql" + +// Internally, it's the Snapshot +var bugType = graphql.NewObject(graphql.ObjectConfig{ + Name: "Bug", + Fields: graphql.Fields{ + "id": &graphql.Field{ + Type: graphql.String, + }, + "status": &graphql.Field{ + Type: graphql.String, + }, + "comments": &graphql.Field{ + Type: graphql.NewList(commentType), + }, + "labels": &graphql.Field{ + Type: graphql.NewList(graphql.String), + }, + // TODO: operations + }, +}) + +var commentType = graphql.NewObject(graphql.ObjectConfig{ + Name: "Comment", + Fields: graphql.Fields{ + "author": &graphql.Field{ + Type: personType, + }, + "message": &graphql.Field{ + Type: graphql.String, + }, + // TODO: time + }, +}) + +var personType = graphql.NewObject(graphql.ObjectConfig{ + Name: "Person", + Fields: graphql.Fields{ + "name": &graphql.Field{ + Type: graphql.String, + }, + "email": &graphql.Field{ + Type: graphql.String, + }, + }, +}) |