MCPcopy Create free account
hub / github.com/ethereum/node-crawler / addFilterArgs

Function addFilterArgs

pkg/api/api.go:65–99  ·  view source on GitHub ↗
(vars map[string]string)

Source from the content-addressed store, hash-verified

63}
64
65func addFilterArgs(vars map[string]string) (string, []interface{}, error) {
66 filter := strings.TrimSpace(vars["filter"])
67 if filter == "" {
68 return "", nil, nil
69 }
70
71 query := "FALSE "
72 var filterArgs [][]string
73 err := json.Unmarshal([]byte(filter), &filterArgs)
74 if err != nil {
75 return "", nil, err
76 }
77
78 var args []interface{}
79 for _, outer := range filterArgs {
80 inner := ""
81 for idx, arg := range outer {
82 key, value, comp, err := unmarshalFilterArgs(arg)
83 if err != nil {
84 return "", nil, err
85 }
86 if validateKey(key) {
87 inner += fmt.Sprintf("(%v %v ?) ", key, comp)
88 args = append(args, value)
89 }
90 if idx < len(outer)-1 {
91 inner += " AND "
92 }
93 }
94 if len(inner) > 0 {
95 query += fmt.Sprintf("OR (%v) ", inner)
96 }
97 }
98 return query, args, nil
99}
100
101// filter args are marshalled as key:value or key:value:comp
102// with comp being a comparator (eq, gt, lt, gte, lte, not)

Callers 1

handleDashboardMethod · 0.85

Calls 2

unmarshalFilterArgsFunction · 0.85
validateKeyFunction · 0.85

Tested by

no test coverage detected