package utils import ( "context" "github.com/99designs/gqlgen/graphql" ) func IsValRequested(ctx context.Context, value string) bool { preloads := GetPreloads(ctx) _, ok := preloads[value] return ok } func GetPreloads(ctx context.Context) map[string]bool { loadedVals := map[string]bool{} preloads := GetNestedPreloads( graphql.GetOperationContext(ctx), graphql.CollectFieldsCtx(ctx, nil), "", ) for _, val := range preloads { loadedVals[val] = true } return loadedVals } func GetNestedPreloads(ctx *graphql.OperationContext, fields []graphql.CollectedField, prefix string) (preloads []string) { for _, column := range fields { prefixColumn := GetPreloadString(prefix, column.Name) preloads = append(preloads, prefixColumn) preloads = append(preloads, GetNestedPreloads(ctx, graphql.CollectFields(ctx, column.Selections, nil), prefixColumn)...) } return } func GetPreloadString(prefix, name string) string { if len(prefix) > 0 { return prefix + "." + name } return name }