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