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  }