MCPcopy Index your code
hub / github.com/dgraph-io/dgraph / parsePredsFromQuery

Function parsePredsFromQuery

edgraph/access.go:861–903  ·  view source on GitHub ↗
(dqls []*dql.GraphQuery)

Source from the content-addressed store, hash-verified

859}
860
861func parsePredsFromQuery(dqls []*dql.GraphQuery) predsAndvars {
862 predsMap := make(map[string]struct{})
863 varsMap := make(map[string]string)
864 for _, gq := range dqls {
865 if gq.Func != nil {
866 predsMap[gq.Func.Attr] = struct{}{}
867 }
868 if len(gq.Var) > 0 {
869 varsMap[gq.Var] = gq.Attr
870 }
871 if len(gq.Attr) > 0 && gq.Attr != "uid" && gq.Attr != "expand" && gq.Attr != "val" {
872 predsMap[gq.Attr] = struct{}{}
873
874 }
875 for _, ord := range gq.Order {
876 predsMap[ord.Attr] = struct{}{}
877 }
878 for _, gbAttr := range gq.GroupbyAttrs {
879 predsMap[gbAttr.Attr] = struct{}{}
880 }
881 for _, pred := range parsePredsFromFilter(gq.Filter) {
882 predsMap[pred] = struct{}{}
883 }
884 childPredandVars := parsePredsFromQuery(gq.Children)
885 for _, childPred := range childPredandVars.preds {
886 predsMap[childPred] = struct{}{}
887 }
888 for childVar := range childPredandVars.vars {
889 varsMap[childVar] = childPredandVars.vars[childVar]
890 }
891 }
892 preds := make([]string, 0, len(predsMap))
893 for pred := range predsMap {
894 if len(pred) > 0 {
895 if _, found := varsMap[pred]; !found {
896 preds = append(preds, pred)
897 }
898 }
899 }
900
901 pv := predsAndvars{preds: preds, vars: varsMap}
902 return pv
903}
904
905func parsePredsFromFilter(f *dql.FilterTree) []string {
906 var preds []string

Callers 1

authorizeQueryFunction · 0.85

Calls 1

parsePredsFromFilterFunction · 0.85

Tested by

no test coverage detected