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  }