Evaluate a `SqlExpr` against a serde_json document, returning a serde_json value.
(expr: &SqlExpr, doc: &serde_json::Value)
| 46 | |
| 47 | /// Evaluate a `SqlExpr` against a serde_json document, returning a serde_json value. |
| 48 | pub(super) fn eval_expr_on_json(expr: &SqlExpr, doc: &serde_json::Value) -> serde_json::Value { |
| 49 | match expr { |
| 50 | SqlExpr::Column(name) => get_field(doc, name), |
| 51 | SqlExpr::Literal(v) => serde_json::Value::from(v.clone()), |
| 52 | other => { |
| 53 | let ndb_doc = nodedb_types::Value::from(doc.clone()); |
| 54 | let result = other.eval(&ndb_doc); |
| 55 | serde_json::Value::from(result) |
| 56 | } |
| 57 | } |
| 58 | } |
| 59 | |
| 60 | pub(super) fn as_f64(v: &serde_json::Value) -> Option<f64> { |
| 61 | match v { |
no test coverage detected