...

Source file src/edge-infra.dev/pkg/edge/api/graph/utils/preloads.go

Documentation: edge-infra.dev/pkg/edge/api/graph/utils

     1  package utils
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/99designs/gqlgen/graphql"
     7  )
     8  
     9  func IsValRequested(ctx context.Context, value string) bool {
    10  	preloads := GetPreloads(ctx)
    11  	_, ok := preloads[value]
    12  	return ok
    13  }
    14  
    15  func GetPreloads(ctx context.Context) map[string]bool {
    16  	loadedVals := map[string]bool{}
    17  	preloads := GetNestedPreloads(
    18  		graphql.GetOperationContext(ctx),
    19  		graphql.CollectFieldsCtx(ctx, nil),
    20  		"",
    21  	)
    22  	for _, val := range preloads {
    23  		loadedVals[val] = true
    24  	}
    25  	return loadedVals
    26  }
    27  
    28  func GetNestedPreloads(ctx *graphql.OperationContext, fields []graphql.CollectedField, prefix string) (preloads []string) {
    29  	for _, column := range fields {
    30  		prefixColumn := GetPreloadString(prefix, column.Name)
    31  		preloads = append(preloads, prefixColumn)
    32  		preloads = append(preloads, GetNestedPreloads(ctx, graphql.CollectFields(ctx, column.Selections, nil), prefixColumn)...)
    33  	}
    34  	return
    35  }
    36  
    37  func GetPreloadString(prefix, name string) string {
    38  	if len(prefix) > 0 {
    39  		return prefix + "." + name
    40  	}
    41  	return name
    42  }
    43  

View as plain text