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

Function getQuery

dql/parser.go:1005–1074  ·  view source on GitHub ↗

getQuery creates a GraphQuery object tree by calling getRoot and goDeep functions by looking at '{'.

(it *lex.ItemIterator)

Source from the content-addressed store, hash-verified

1003// getQuery creates a GraphQuery object tree by calling getRoot
1004// and goDeep functions by looking at '{'.
1005func getQuery(it *lex.ItemIterator) (gq *GraphQuery, rerr error) {
1006 // First, get the root
1007 gq, rerr = getRoot(it)
1008 if rerr != nil {
1009 return nil, rerr
1010 }
1011
1012 var seenFilter bool
1013L:
1014 // Recurse to deeper levels through godeep.
1015 if !it.Next() {
1016 return nil, it.Errorf("Expecting more lexer items while parsing query")
1017 }
1018
1019 item := it.Item()
1020 switch item.Typ {
1021 case itemLeftCurl:
1022 if rerr = godeep(it, gq); rerr != nil {
1023 return nil, rerr
1024 }
1025 case itemAt:
1026 it.Next()
1027 item := it.Item()
1028 if item.Typ == itemName {
1029 switch strings.ToLower(item.Val) {
1030 case "filter":
1031 if seenFilter {
1032 return nil, item.Errorf("Repeated filter at root")
1033 }
1034 seenFilter = true
1035 filter, err := parseFilter(it)
1036 if err != nil {
1037 return nil, err
1038 }
1039 gq.Filter = filter
1040
1041 case "normalize":
1042 gq.Normalize = true
1043 case "cascade":
1044 if err := parseCascade(it, gq); err != nil {
1045 return nil, err
1046 }
1047 case "groupby":
1048 gq.IsGroupby = true
1049 if err := parseGroupby(it, gq); err != nil {
1050 return nil, err
1051 }
1052 case "ignorereflex":
1053 gq.IgnoreReflex = true
1054 case "recurse":
1055 gq.Recurse = true
1056 if err := parseRecurseArgs(it, gq); err != nil {
1057 return nil, err
1058 }
1059 default:
1060 return nil, item.Errorf("Unknown directive [%s]", item.Val)
1061 }
1062 goto L

Callers 2

ParseWithNeedVarsFunction · 0.85
getVariablesAndQueryFunction · 0.85

Calls 10

getRootFunction · 0.85
godeepFunction · 0.85
parseFilterFunction · 0.85
parseCascadeFunction · 0.85
parseGroupbyFunction · 0.85
parseRecurseArgsFunction · 0.85
ItemMethod · 0.80
PrevMethod · 0.80
NextMethod · 0.45
ErrorfMethod · 0.45

Tested by

no test coverage detected