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}