llzai's picture
Upload 1793 files
9853396 verified
package api
import (
"net/http"
"github.com/99designs/gqlgen/graphql"
"github.com/99designs/gqlgen/graphql/handler"
"github.com/99designs/gqlgen/graphql/handler/extension"
"github.com/99designs/gqlgen/graphql/handler/lru"
"github.com/99designs/gqlgen/graphql/handler/transport"
"github.com/99designs/gqlgen/graphql/playground"
"github.com/vektah/gqlparser/v2/ast"
"go.uber.org/fx"
"github.com/looplj/axonhub/internal/ent"
)
type Dependencies struct {
fx.In
Client *ent.Client
}
type GraphqlHandler struct {
Graphql http.Handler
Playground http.Handler
}
func NewGraphqlHandlers(schema graphql.ExecutableSchema) *GraphqlHandler {
return &GraphqlHandler{
Graphql: NewGraphHandler(schema),
Playground: playground.Handler("AxonHub", "/graphql"),
}
}
func NewGraphHandler(es graphql.ExecutableSchema) *handler.Server {
srv := handler.New(es)
srv.AddTransport(transport.Options{})
srv.AddTransport(transport.GET{})
srv.AddTransport(transport.POST{})
srv.AddTransport(transport.MultipartForm{})
srv.SetQueryCache(lru.New[*ast.QueryDocument](1024))
srv.Use(extension.Introspection{})
srv.Use(extension.AutomaticPersistedQuery{
Cache: lru.New[string](1024),
})
return srv
}