Skip to content

Commit

Permalink
feat(graphql): allow to register additional OperationMiddlewares (#51)
Browse files Browse the repository at this point in the history
  • Loading branch information
tessig committed Dec 5, 2022
1 parent 05fb210 commit 34d923a
Showing 1 changed file with 11 additions and 4 deletions.
15 changes: 11 additions & 4 deletions module.go
Expand Up @@ -40,16 +40,18 @@ type routes struct {
origins flamingoConfig.Slice
introspectionEnabled bool
uploadMaxSize int64
operationMiddlewares []graphql.OperationMiddleware
}

// Inject executable schema
func (r *routes) Inject(
reverseRouter web.ReverseRouter,
config *struct {
Exec graphql.ExecutableSchema `inject:",optional"`
Origins flamingoConfig.Slice `inject:"config:graphql.cors.origins"`
IntrospectionEnabled bool `inject:"config:graphql.introspectionEnabled,optional"`
UploadMaxSize int64 `inject:"config:graphql.multipartForm.uploadMaxSize,optional"`
Exec graphql.ExecutableSchema `inject:",optional"`
OperationMiddlewares []graphql.OperationMiddleware `inject:",optional"`
Origins flamingoConfig.Slice `inject:"config:graphql.cors.origins"`
IntrospectionEnabled bool `inject:"config:graphql.introspectionEnabled,optional"`
UploadMaxSize int64 `inject:"config:graphql.multipartForm.uploadMaxSize,optional"`
},
) {
r.reverseRouter = reverseRouter
Expand All @@ -58,6 +60,7 @@ func (r *routes) Inject(
r.origins = config.Origins
r.introspectionEnabled = config.IntrospectionEnabled
r.uploadMaxSize = config.UploadMaxSize
r.operationMiddlewares = config.OperationMiddlewares
}
}

Expand Down Expand Up @@ -101,6 +104,10 @@ func (r *routes) Routes(registry *web.RouterRegistry) {
return next(ctx)
})

for _, middleware := range r.operationMiddlewares {
gqlHandler.AroundOperations(middleware)
}

registry.MustRoute("/graphql", "graphql")
registry.HandleOptions("graphql", web.WrapHTTPHandler(corsHandler.preflightHandler()))
registry.HandleAny("graphql", wrapGqlHandler(corsHandler.gqlMiddleware(gqlHandler)))
Expand Down

0 comments on commit 34d923a

Please sign in to comment.