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}