This commit is contained in:
JMARyA 2024-02-09 10:52:14 +01:00
parent efed4c0bea
commit b28b4a4e04
Signed by: jmarya
GPG key ID: 901B2ADDF27C2263

View file

@ -5,17 +5,17 @@ fn less_than_num(a: &serde_json::Value, b: &serde_json::Value) -> bool {
if a.is_f64() {
let a = a.as_f64().unwrap();
let b = b.as_f64().unwrap();
return a < b;
a < b
} else if a.is_i64() {
let a = a.as_i64().unwrap();
let b = b.as_i64().unwrap();
return a < b;
a < b
} else if a.is_u64() {
let a = a.as_u64().unwrap();
let b = b.as_u64().unwrap();
return a < b;
a < b
} else {
return false;
false
}
}
@ -23,17 +23,17 @@ fn greater_than_num(a: &serde_json::Value, b: &serde_json::Value) -> bool {
if a.is_f64() {
let a = a.as_f64().unwrap();
let b = b.as_f64().unwrap();
return a > b;
a > b
} else if a.is_i64() {
let a = a.as_i64().unwrap();
let b = b.as_i64().unwrap();
return a > b;
a > b
} else if a.is_u64() {
let a = a.as_u64().unwrap();
let b = b.as_u64().unwrap();
return a > b;
a > b
} else {
return false;
false
}
}
@ -70,6 +70,7 @@ pub enum FilterError {
///
/// assert!(matches(&filter, &obj));
/// ```
#[must_use]
pub fn matches(filter: &serde_json::Value, obj: &serde_json::Value) -> bool {
try_matches(filter, obj).unwrap()
}
@ -109,17 +110,17 @@ pub fn try_matches(
}
}
_ => {
if op.starts_with("$") {
if op.starts_with('$') {
return Err(FilterError::UnknownOperator);
}
}
}
}
for (key, val) in filter.iter() {
for (key, val) in filter {
if val.is_object() {
let val_keys: Vec<_> = val.as_object().unwrap().keys().collect();
if val_keys.first().unwrap().starts_with("$") {
if val_keys.first().unwrap().starts_with('$') {
return match_operator(val, obj, key.as_str());
} else {
// nested
@ -278,12 +279,12 @@ fn match_operator(
}
}
_ => {
if op.starts_with("$") {
if op.starts_with('$') {
return Err(FilterError::UnknownOperator);
}
}
}
}
return Ok(false);
Err(FilterError::InvalidFilter)
}