1//go:generate go run gen_graphql.go
2
3// Package graphql contains the root GraphQL http handler
4package graphql
5
6import (
7 "github.com/99designs/gqlgen/handler"
8 "github.com/MichaelMure/git-bug/graphql/graph"
9 "github.com/MichaelMure/git-bug/graphql/resolvers"
10 "github.com/MichaelMure/git-bug/repository"
11 "net/http"
12)
13
14// Handler is the root GraphQL http handler
15type Handler struct {
16 http.HandlerFunc
17 *resolvers.RootResolver
18}
19
20func NewHandler(repo repository.ClockedRepo) (Handler, error) {
21 h := Handler{
22 RootResolver: resolvers.NewRootResolver(),
23 }
24
25 err := h.RootResolver.RegisterDefaultRepository(repo)
26 if err != nil {
27 return Handler{}, err
28 }
29
30 config := graph.Config{
31 Resolvers: h.RootResolver,
32 }
33
34 h.HandlerFunc = handler.GraphQL(graph.NewExecutableSchema(config))
35
36 return h, nil
37}