...
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