handler.go

 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}