From e0d319698f510a462630194a5d9e644cb4acc746 Mon Sep 17 00:00:00 2001 From: Jeremiah Russell Date: Fri, 10 Oct 2025 16:15:16 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(processor):=20add=20label=20ex?= =?UTF-8?q?istence=20check=20before=20processing?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- src/processor.rs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/processor.rs b/src/processor.rs index 1638ffb..95af729 100644 --- a/src/processor.rs +++ b/src/processor.rs @@ -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(())