From 4bad8356ac1c2e10db4782623984d1b74f11bef7 Mon Sep 17 00:00:00 2001 From: Markus Unterwaditzer Date: Tue, 19 May 2026 23:36:08 +0200 Subject: [PATCH] Refactor record deletion to use FileKind --- daemon/src/qmdl_store.rs | 46 +++++++++++++++------------------------- daemon/src/server.rs | 6 ++++++ 2 files changed, 23 insertions(+), 29 deletions(-) diff --git a/daemon/src/qmdl_store.rs b/daemon/src/qmdl_store.rs index 0bb2ac4..8120e09 100644 --- a/daemon/src/qmdl_store.rs +++ b/daemon/src/qmdl_store.rs @@ -528,18 +528,13 @@ impl RecordingStore { }; let entry_to_delete = self.manifest.entries.remove(entry_to_delete_idx); self.write_manifest().await?; - let qmdl_filepath = entry_to_delete.get_qmdl_filepath(&self.path); - let analysis_filepath = entry_to_delete.get_analysis_filepath(&self.path); - let gps_filepath = entry_to_delete.get_gps_filepath(&self.path); - remove_file_if_exists(&qmdl_filepath) - .await - .map_err(RecordingStoreError::DeleteFileError)?; - remove_file_if_exists(&analysis_filepath) - .await - .map_err(RecordingStoreError::DeleteFileError)?; - remove_file_if_exists(&gps_filepath) - .await - .map_err(RecordingStoreError::DeleteFileError)?; + + for &file_kind in FileKind::ALL { + let filepath = file_kind.get_filepath(&entry_to_delete.name, &self.path); + remove_file_if_exists(&filepath) + .await + .map_err(RecordingStoreError::DeleteFileError)?; + } Ok(()) } @@ -550,25 +545,18 @@ impl RecordingStore { let mut keep = Vec::new(); - for entry in &self.manifest.entries { - let qmdl_filepath = entry.get_qmdl_filepath(&self.path); - let analysis_filepath = entry.get_analysis_filepath(&self.path); - - if let Err(e) = remove_file_if_exists(&qmdl_filepath).await { - log::warn!("failed to remove {qmdl_filepath:?}: {e:?}"); - keep.push(true); - continue; + 'entries: for entry in &self.manifest.entries { + for &file_kind in FileKind::ALL { + let filepath = file_kind.get_filepath(&entry.name, &self.path); + if let Err(e) = remove_file_if_exists(&filepath).await { + log::warn!("failed to remove {filepath:?}: {e:?}"); + // Some error happened with deleting this entry, abort and go to the next one. + // Also *keep* the manifest entry. + keep.push(true); + continue 'entries; + } } - if let Err(e) = remove_file_if_exists(&analysis_filepath).await { - log::warn!("failed to remove {analysis_filepath:?}: {e:?}"); - keep.push(true); - continue; - } - - let gps_filepath = entry.get_gps_filepath(&self.path); - remove_file_if_exists(&gps_filepath).await.ok(); - keep.push(false); } diff --git a/daemon/src/server.rs b/daemon/src/server.rs index 9e0cf0a..6f495bc 100644 --- a/daemon/src/server.rs +++ b/daemon/src/server.rs @@ -359,8 +359,14 @@ pub async fn get_zip( let result: Result<(), Error> = async { let mut zip = ZipFileWriter::with_tokio(writer); + const EXCLUDED_FROM_ZIP: &[FileKind] = &[FileKind::Analysis]; + // Add stored files for &file_kind in FileKind::ALL { + if EXCLUDED_FROM_ZIP.contains(&file_kind) { + continue; + } + let file_opt = { let qmdl_store = qmdl_store_lock.read().await; qmdl_store.open_file(entry_index, file_kind).await?