Skip to content

Wrong OpValValue value for $in operation in op_value_to_op_val_type for OpValValue #4

Open
@1g0rkR

Description

@1g0rkR

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

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions