api2: optimize filtered snapshot listing

Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
This commit is contained in:
Wolfgang Bumiller 2022-07-14 10:53:39 +02:00
parent 487c5be9ab
commit 91f4b11fa7

View File

@ -483,13 +483,15 @@ unsafe fn list_snapshots_blocking(
} }
// FIXME: Recursion // FIXME: Recursion
(Some(backup_type), None) => datastore (Some(backup_type), None) => datastore
.iter_backup_groups_ok(ns.clone())? .iter_backup_type_ok(ns.clone(), backup_type)?
.filter(|group| group.backup_type() == backup_type)
.collect(), .collect(),
// FIXME: Recursion // FIXME: Recursion
(None, Some(backup_id)) => datastore (None, Some(backup_id)) => BackupType::iter()
.iter_backup_groups_ok(ns.clone())? .filter_map(|backup_type| {
.filter(|group| group.backup_id() == backup_id) let group =
datastore.backup_group_from_parts(ns.clone(), backup_type, backup_id.clone());
group.exists().then(move || group)
})
.collect(), .collect(),
// FIXME: Recursion // FIXME: Recursion
(None, None) => datastore.list_backup_groups(ns.clone())?, (None, None) => datastore.list_backup_groups(ns.clone())?,