github.com/kyma-incubator/compass/components/director@v0.0.0-20230623144113-d764f56ff805/internal/dataloaders/eventDefLoaders.go (about) 1 //go:generate go run github.com/vektah/dataloaden EventDefLoader ParamEventDef *github.com/kyma-incubator/compass/components/director/pkg/graphql.EventDefinitionPage 2 3 package dataloader 4 5 import ( 6 "context" 7 "net/http" 8 "time" 9 10 "github.com/kyma-incubator/compass/components/director/pkg/graphql" 11 ) 12 13 const loadersKeyEventDef contextKey = "dataloadersEventDef" 14 15 // EventDefLoaders missing godoc 16 type EventDefLoaders struct { 17 EventDefByID EventDefLoader 18 } 19 20 // ParamEventDef missing godoc 21 type ParamEventDef struct { 22 ID string 23 First *int 24 After *graphql.PageCursor 25 Ctx context.Context 26 } 27 28 // HandlerEventDef missing godoc 29 func HandlerEventDef(fetchFunc func(keys []ParamEventDef) ([]*graphql.EventDefinitionPage, []error), maxBatch int, wait time.Duration) func(next http.Handler) http.Handler { 30 return func(next http.Handler) http.Handler { 31 return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 32 ctx := context.WithValue(r.Context(), loadersKeyEventDef, &EventDefLoaders{ 33 EventDefByID: EventDefLoader{ 34 maxBatch: maxBatch, 35 wait: wait, 36 fetch: fetchFunc, 37 }, 38 }) 39 r = r.WithContext(ctx) 40 next.ServeHTTP(w, r) 41 }) 42 } 43 } 44 45 // EventDefFor missing godoc 46 func EventDefFor(ctx context.Context) *EventDefLoaders { 47 return ctx.Value(loadersKeyEventDef).(*EventDefLoaders) 48 }