diff --git a/crates/index-scheduler/src/scheduler/process_export.rs b/crates/index-scheduler/src/scheduler/process_export.rs index 5c65ca51e..e6c09e58a 100644 --- a/crates/index-scheduler/src/scheduler/process_export.rs +++ b/crates/index-scheduler/src/scheduler/process_export.rs @@ -90,10 +90,9 @@ impl IndexScheduler { request.send_json(settings.clone()).map_err(into_backoff_error) })?; - // TODO support JSON Value objects let filter = filter - .as_deref() - .map(Filter::from_str) + .as_ref() + .map(Filter::from_json) .transpose() .map_err(|e| Error::from_milli(e, Some(uid.to_string())))? .flatten(); diff --git a/crates/meilisearch-types/src/tasks.rs b/crates/meilisearch-types/src/tasks.rs index b5e2581fc..86951192c 100644 --- a/crates/meilisearch-types/src/tasks.rs +++ b/crates/meilisearch-types/src/tasks.rs @@ -8,6 +8,7 @@ use milli::update::IndexDocumentsMethod; use milli::Object; use roaring::RoaringBitmap; use serde::{Deserialize, Serialize, Serializer}; +use serde_json::Value; use time::{Duration, OffsetDateTime}; use utoipa::{schema, ToSchema}; use uuid::Uuid; @@ -111,11 +112,11 @@ pub enum KindWithContent { }, DocumentDeletionByFilter { index_uid: String, - filter_expr: serde_json::Value, + filter_expr: Value, }, DocumentEdition { index_uid: String, - filter_expr: Option, + filter_expr: Option, context: Option, function: String, }, @@ -174,7 +175,7 @@ pub struct IndexSwap { #[derive(Debug, Default, Clone, PartialEq, Eq, Serialize, Deserialize, ToSchema)] #[serde(rename_all = "camelCase")] pub struct ExportIndexSettings { - pub filter: Option, + pub filter: Option, } impl KindWithContent { diff --git a/crates/meilisearch/src/routes/export.rs b/crates/meilisearch/src/routes/export.rs index 40ef20008..de1fe2c38 100644 --- a/crates/meilisearch/src/routes/export.rs +++ b/crates/meilisearch/src/routes/export.rs @@ -12,6 +12,7 @@ use meilisearch_types::index_uid_pattern::IndexUidPattern; use meilisearch_types::keys::actions; use meilisearch_types::tasks::{ExportIndexSettings as DbExportIndexSettings, KindWithContent}; use serde::Serialize; +use serde_json::Value; use tracing::debug; use utoipa::{OpenApi, ToSchema}; @@ -122,5 +123,5 @@ pub struct ExportIndexSettings { #[schema(value_type = Option, example = json!("genres = action"))] #[serde(default)] #[deserr(default, error = DeserrJsonError)] - pub filter: Option, + pub filter: Option, }