mirror of
https://github.com/meilisearch/MeiliSearch
synced 2024-11-26 23:04:26 +01:00
Fixes error message when lat/lng are unparseable
This commit is contained in:
parent
497187083b
commit
a2cd7214f0
@ -2321,9 +2321,7 @@ pub(crate) mod tests {
|
|||||||
.unwrap_err();
|
.unwrap_err();
|
||||||
assert!(matches!(
|
assert!(matches!(
|
||||||
err1,
|
err1,
|
||||||
Error::UserError(UserError::InvalidGeoField(
|
Error::UserError(UserError::InvalidGeoField(GeoError::BadLatitudeAndLongitude { .. }))
|
||||||
GeoError::BadLatitudeAndLongitude { .. }
|
|
||||||
))
|
|
||||||
));
|
));
|
||||||
|
|
||||||
db_snap!(index, geo_faceted_documents_ids); // ensure that no more document was inserted
|
db_snap!(index, geo_faceted_documents_ids); // ensure that no more document was inserted
|
||||||
|
@ -98,7 +98,12 @@ pub fn enrich_documents_batch<R: Read + Seek>(
|
|||||||
// If the settings specifies that a _geo field must be used therefore we must check the
|
// If the settings specifies that a _geo field must be used therefore we must check the
|
||||||
// validity of it in all the documents of this batch and this is when we return `Some`.
|
// validity of it in all the documents of this batch and this is when we return `Some`.
|
||||||
let geo_field_id = match documents_batch_index.id("_geo") {
|
let geo_field_id = match documents_batch_index.id("_geo") {
|
||||||
Some(geo_field_id) if index.sortable_fields(rtxn)?.contains("_geo") => Some(geo_field_id),
|
Some(geo_field_id)
|
||||||
|
if index.sortable_fields(rtxn)?.contains("_geo")
|
||||||
|
|| index.filterable_fields(rtxn)?.contains("_geo") =>
|
||||||
|
{
|
||||||
|
Some(geo_field_id)
|
||||||
|
}
|
||||||
_otherwise => None,
|
_otherwise => None,
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -367,7 +372,9 @@ pub fn extract_finite_float_from_value(value: Value) -> StdResult<f64, Value> {
|
|||||||
|
|
||||||
pub fn validate_geo_from_json(id: &DocumentId, bytes: &[u8]) -> Result<StdResult<(), GeoError>> {
|
pub fn validate_geo_from_json(id: &DocumentId, bytes: &[u8]) -> Result<StdResult<(), GeoError>> {
|
||||||
use GeoError::*;
|
use GeoError::*;
|
||||||
let debug_id = || Value::from(id.debug());
|
let debug_id = || {
|
||||||
|
serde_json::from_slice(id.value().as_bytes()).unwrap_or_else(|_| Value::from(id.debug()))
|
||||||
|
};
|
||||||
match serde_json::from_slice(bytes).map_err(InternalError::SerdeJson)? {
|
match serde_json::from_slice(bytes).map_err(InternalError::SerdeJson)? {
|
||||||
Value::Object(mut object) => match (object.remove("lat"), object.remove("lng")) {
|
Value::Object(mut object) => match (object.remove("lat"), object.remove("lng")) {
|
||||||
(Some(lat), Some(lng)) => {
|
(Some(lat), Some(lng)) => {
|
||||||
|
Loading…
Reference in New Issue
Block a user