Open
Description
Hi there,
Wrong operator for $in function.
Correction:
... "$in", value) => OpValValue::In(into_values(value)?), ...
impl OpValueToOpValType for OpValValue {
fn op_value_to_op_val_type(op: &str, value: Value) -> Result<Self>
where
Self: Sized,
{
fn into_values(value: Value) -> Result<Vec<Value>> {
let mut values = Vec::new();
let Value::Array(array) = value else {
return Err(Error::JsonValArrayWrongType { actual_value: value });
};
for item in array.into_iter() {
values.push(item)
}
Ok(values)
}
let ov = match (op, value) {
("$eq", v) => OpValValue::Eq(v),
("$in", value) => OpValValue::NotIn(into_values(value)?), <<<---- Should be OpValValue::In
("$not", v) => OpValValue::Not(v),
("$notIn", value) => OpValValue::NotIn(into_values(value)?),
("$lt", v) => OpValValue::Lt(v),
("$lte", v) => OpValValue::Lte(v),
("$gt", v) => OpValValue::Gt(v),
("$gte", v) => OpValValue::Gte(v),
("$null", Value::Bool(v)) => OpValValue::Null(v),
(_, v) => {
return Err(Error::JsonOpValNotSupported {
operator: op.to_string(),
value: v,
})
}
};
Ok(ov)
}
}
}
Metadata
Metadata
Assignees
Labels
No labels