handler.go

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