MCPcopy
hub / github.com/dgraph-io/dgraph / substituteVariablesFilter

Function substituteVariablesFilter

dql/parser.go:548–596  ·  view source on GitHub ↗
(f *FilterTree, vmap varMap)

Source from the content-addressed store, hash-verified

546}
547
548func substituteVariablesFilter(f *FilterTree, vmap varMap) error {
549 if f == nil {
550 return nil
551 }
552
553 if f.Func != nil {
554 if err := substituteVar(f.Func.Attr, &f.Func.Attr, vmap); err != nil {
555 return err
556 }
557
558 for idx, v := range f.Func.Args {
559 if !v.IsDQLVar {
560 continue
561 }
562 if f.Func.Name == uidFunc {
563 // This is to support DQL variables in uid functions.
564 idVal, ok := vmap[v.Value]
565 if !ok {
566 return errors.Errorf("Couldn't find value for DQL variable: [%s]", v.Value)
567 }
568 uids, err := parseID(idVal.Value)
569 if err != nil {
570 return err
571 }
572 f.Func.UID = append(f.Func.UID, uids...)
573 continue
574 }
575
576 if err := substituteVar(v.Value, &f.Func.Args[idx].Value, vmap); err != nil {
577 return err
578 }
579
580 // We need to parse the regexp after substituting it from a DQL Variable.
581 _, ok := vmap[v.Value]
582 if f.Func.Name == "regexp" && ok {
583 if err := regExpVariableFilter(f.Func, idx); err != nil {
584 return err
585 }
586 }
587 }
588 }
589
590 for _, fChild := range f.Child {
591 if err := substituteVariablesFilter(fChild, vmap); err != nil {
592 return err
593 }
594 }
595 return nil
596}
597
598// Vars struct contains the list of variables defined and used by a
599// query block.

Callers 1

substituteVariablesFunction · 0.85

Calls 4

substituteVarFunction · 0.85
parseIDFunction · 0.85
regExpVariableFilterFunction · 0.85
ErrorfMethod · 0.45

Tested by

no test coverage detected