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}