refactor
This commit is contained in:
parent
efed4c0bea
commit
b28b4a4e04
1 changed files with 14 additions and 13 deletions
27
src/lib.rs
27
src/lib.rs
|
@ -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)
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue