github.com/kyma-incubator/compass/components/director@v0.0.0-20230623144113-d764f56ff805/internal/dataloaders/formationStatusLoaders.go (about) 1 //go:generate go run github.com/vektah/dataloaden FormationStatusLoader ParamFormationStatus *github.com/kyma-incubator/compass/components/director/pkg/graphql.FormationStatus 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 loadersKeyFormationStatus contextKey = "dataloadersFormationStatus" 14 15 // FormationStatusLoaders missing godoc 16 type FormationStatusLoaders struct { 17 FormationStatusByID FormationStatusLoader 18 } 19 20 // ParamFormationStatus missing godoc 21 type ParamFormationStatus struct { 22 ID string 23 State string 24 Message string 25 ErrorCode int 26 Ctx context.Context 27 } 28 29 // HandlerFormationStatus missing godoc 30 func HandlerFormationStatus(fetchFunc func(keys []ParamFormationStatus) ([]*graphql.FormationStatus, []error), maxBatch int, wait time.Duration) func(next http.Handler) http.Handler { 31 return func(next http.Handler) http.Handler { 32 return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { 33 ctx := context.WithValue(r.Context(), loadersKeyFormationStatus, &FormationStatusLoaders{ 34 FormationStatusByID: FormationStatusLoader{ 35 maxBatch: maxBatch, 36 wait: wait, 37 fetch: fetchFunc, 38 }, 39 }) 40 r = r.WithContext(ctx) 41 next.ServeHTTP(w, r) 42 }) 43 } 44 } 45 46 // FormationStatusFor missing godoc 47 func FormationStatusFor(ctx context.Context) *FormationStatusLoaders { 48 return ctx.Value(loadersKeyFormationStatus).(*FormationStatusLoaders) 49 }