diff --git a/crates/meilisearch-types/src/tasks.rs b/crates/meilisearch-types/src/tasks.rs index cdbf6d3aa..0618fa333 100644 --- a/crates/meilisearch-types/src/tasks.rs +++ b/crates/meilisearch-types/src/tasks.rs @@ -210,7 +210,7 @@ impl KindWithContent { | SnapshotCreation | TaskCancelation { .. } | TaskDeletion { .. } - | Export { .. } // TODO Should I resolve the index names? + | Export { .. } | UpgradeDatabase { .. } => vec![], DocumentAdditionOrUpdate { index_uid, .. } | DocumentEdition { index_uid, .. } diff --git a/crates/meilisearch/src/routes/export.rs b/crates/meilisearch/src/routes/export.rs index 1df2d271e..31f8812c7 100644 --- a/crates/meilisearch/src/routes/export.rs +++ b/crates/meilisearch/src/routes/export.rs @@ -81,15 +81,17 @@ async fn export( let Export { url, api_key, payload_size, indexes } = export; - let indexes = if indexes.is_empty() { - BTreeMap::from([(IndexUidPattern::new_unchecked("*"), DbExportIndexSettings::default())]) - } else { - indexes + let indexes = match indexes { + Some(indexes) => indexes .into_iter() .map(|(pattern, ExportIndexSettings { filter })| { (pattern, DbExportIndexSettings { filter }) }) - .collect() + .collect(), + None => BTreeMap::from([( + IndexUidPattern::new_unchecked("*"), + DbExportIndexSettings::default(), + )]), }; let task = KindWithContent::Export { @@ -130,7 +132,7 @@ pub struct Export { #[schema(value_type = Option>, example = json!({ "*": { "filter": null } }))] #[deserr(default)] #[serde(default)] - pub indexes: BTreeMap, + pub indexes: Option>, } /// A wrapper around the `Byte` type that implements `Deserr`. diff --git a/crates/meilisearch/src/routes/export_analytics.rs b/crates/meilisearch/src/routes/export_analytics.rs index 44dba2c9b..7ac713e9b 100644 --- a/crates/meilisearch/src/routes/export_analytics.rs +++ b/crates/meilisearch/src/routes/export_analytics.rs @@ -15,9 +15,10 @@ impl ExportAnalytics { let Export { url: _, api_key, payload_size, indexes } = export; let has_api_key = api_key.is_some(); - let index_patterns_count = indexes.len(); - let patterns_with_filter_count = - indexes.values().filter(|settings| settings.filter.is_some()).count(); + let index_patterns_count = indexes.as_ref().map_or(0, |indexes| indexes.len()); + let patterns_with_filter_count = indexes.as_ref().map_or(0, |indexes| { + indexes.values().filter(|settings| settings.filter.is_some()).count() + }); let payload_sizes = if let Some(crate::routes::export::ByteWithDeserr(byte_size)) = payload_size { vec![byte_size.as_u64()]