Walk() an expression, and its logic to create an appropriately nested bson document for mongo queries if possible. - if can't express logic we need to allow qlbridge to poly-fill
(cur expr.Node)
| 195 | // - if can't express logic we need to allow qlbridge to poly-fill |
| 196 | // |
| 197 | func (m *rewrite) walkNode(cur expr.Node) (expr.Node, error) { |
| 198 | //u.Debugf("WalkNode: %#v", cur) |
| 199 | switch curNode := cur.(type) { |
| 200 | case *expr.NumberNode, *expr.StringNode: |
| 201 | return curNode, nil |
| 202 | case *expr.BinaryNode: |
| 203 | return m.walkFilterBinary(curNode) |
| 204 | case *expr.TriNode: // Between |
| 205 | return m.walkFilterTri(curNode) |
| 206 | case *expr.UnaryNode: |
| 207 | //return m.walkUnary(curNode) |
| 208 | u.Warnf("not implemented: %#v", curNode) |
| 209 | return nil, fmt.Errorf("Not implemented urnary function: %v", curNode.String()) |
| 210 | case *expr.FuncNode: |
| 211 | return m.walkFilterFunc(curNode) |
| 212 | case *expr.IdentityNode: |
| 213 | u.Warnf("we are trying to project? %v", curNode.String()) |
| 214 | return curNode, nil |
| 215 | case *expr.ArrayNode: |
| 216 | return m.walkArrayNode(curNode) |
| 217 | default: |
| 218 | u.Debugf("unrecognized T:%T %v", cur, cur) |
| 219 | } |
| 220 | |
| 221 | return cur, nil |
| 222 | } |
| 223 | |
| 224 | // Tri Nodes expressions: |
| 225 | // |
no test coverage detected