feat(processor): add label existence check before processing

- check if the label exists in the mailbox before proceeding to trash or delete messages
- return an error if the label is not found, preventing further processing
This commit is contained in:
Jeremiah Russell
2025-10-10 16:15:16 +01:00
committed by Jeremiah Russell
parent c7eb6a5581
commit e0d319698f

View File

@@ -1,6 +1,6 @@
// use crate::EolRule;
use crate::{Delete, EolAction, Result, Trash, config::EolRule};
use crate::{Delete, EolAction, Error, Result, Trash, config::EolRule};
/// Rule processor
#[derive(Debug)]
@@ -28,16 +28,21 @@ impl<'a> Processor<'a> {
/// Trash the messages
pub async fn trash_messages(&self, label: &str) -> Result<()> {
let mut messages_to_trash = Trash::new(&self.credential_file).await?;
messages_to_trash
.message_list()
.add_labels(&self.credential_file, &[label.to_string()])
.await?;
if messages_to_trash.message_list().label_ids().is_empty() {
return Err(Error::LableNotFoundInMailbox(label.to_string()));
}
messages_to_trash
.message_list()
.set_query(&self.rule.eol_query());
log::info!("{messages_to_trash:?}");
log::info!("Ready to run");
messages_to_trash.run(0).await
}
@@ -50,12 +55,19 @@ impl<'a> Processor<'a> {
.add_labels(&self.credential_file, &[label.to_string()])
.await?;
if messages_to_delete.message_list().label_ids().is_empty() {
return Err(Error::LableNotFoundInMailbox(label.to_string()));
}
messages_to_delete
.message_list()
.set_query(&self.rule.eol_query());
log::info!("{messages_to_delete:?}");
log::info!("Ready to run");
messages_to_delete.prepare(0).await?;
if self.execute {
log::warn!("***executing final delete messages***");
messages_to_delete.batch_delete().await
} else {
Ok(())