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