fix: allow filters on = inf, = NaN, return InvalidFilter for < inf, < NaN

Fixes meilisearch/meilisearch#3000
This commit is contained in:
Louis Dureuil 2022-11-08 10:17:16 +01:00
parent 6add470805
commit 3328560788
No known key found for this signature in database
3 changed files with 28 additions and 15 deletions

View file

@ -44,7 +44,6 @@ mod error;
mod value;
use std::fmt::Debug;
use std::str::FromStr;
pub use condition::{parse_condition, parse_to, Condition};
use condition::{parse_exists, parse_not_exists};
@ -100,12 +99,13 @@ impl<'a> Token<'a> {
Error::new_from_external(self.span, error)
}
pub fn parse<T>(&self) -> Result<T, Error>
where
T: FromStr,
T::Err: std::error::Error,
{
self.span.parse().map_err(|e| self.as_external_error(e))
pub fn parse_finite_float(&self) -> Result<f64, Error> {
let value: f64 = self.span.parse().map_err(|e| self.as_external_error(e))?;
if value.is_finite() {
Ok(value)
} else {
Err(Error::new_from_kind(self.span, ErrorKind::NonFiniteFloat))
}
}
}