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	"net/http"
 8
 9	"github.com/99designs/gqlgen/graphql/handler"
10
11	"github.com/MichaelMure/git-bug/graphql/config"
12	"github.com/MichaelMure/git-bug/graphql/graph"
13	"github.com/MichaelMure/git-bug/graphql/resolvers"
14	"github.com/MichaelMure/git-bug/repository"
15)
16
17// Handler is the root GraphQL http handler
18type Handler struct {
19	http.Handler
20	*resolvers.RootResolver
21}
22
23func NewHandler(repo repository.ClockedRepo, cfg config.Config) (Handler, error) {
24	h := Handler{
25		RootResolver: resolvers.NewRootResolver(cfg),
26	}
27
28	err := h.RootResolver.RegisterDefaultRepository(repo)
29	if err != nil {
30		return Handler{}, err
31	}
32
33	config := graph.Config{
34		Resolvers: h.RootResolver,
35	}
36
37	h.Handler = handler.NewDefaultServer(graph.NewExecutableSchema(config))
38
39	return h, nil
40}