INNER CODE UNIT · Rust
parse_value_operator
fcoury/oxide · src/parser/mod.rs:192
fn parse_value_operator(value_oper: ValueOperator, field: String) -> Result<String> {
let operator = match value_oper.operator.as_str() {
"$lt" | "$lte" | "$gt" | "$gte" | "$ne" | "$eq" => {
translate_operator(value_oper.operator.as_str())
}
"$regex" => "~",
"$exists" => {
let source = "_jsonb".to_string();
let value = value_oper.value.value;
let (field, target) = if field.contains(".") {
let parts = field.split(".").collect::<Vec<&str>>();
let field = parts[parts.len() - 1].to_string();
let target = format!("_jsonb->'{}'", parts[0..parts.len() - 1].join("'->'"));
(field, target)
} else {
(field, source)
};