Better behavior when null indexes

This commit is contained in:
Clément Renault 2025-06-30 18:59:16 +02:00
parent ad03c86c44
commit f4bb6cbca8
No known key found for this signature in database
GPG key ID: F250A4C4E3AE5F5F
3 changed files with 13 additions and 10 deletions

View file

@ -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<BTreeMap<String, ExportIndexSettings>>, example = json!({ "*": { "filter": null } }))]
#[deserr(default)]
#[serde(default)]
pub indexes: BTreeMap<IndexUidPattern, ExportIndexSettings>,
pub indexes: Option<BTreeMap<IndexUidPattern, ExportIndexSettings>>,
}
/// A wrapper around the `Byte` type that implements `Deserr`.

View file

@ -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()]