From 629c9d2e463592938ce0bb1c394ff10a8849dd15 Mon Sep 17 00:00:00 2001 From: Jeremiah Russell Date: Fri, 10 Oct 2025 14:48:39 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(processor):=20implement=20mess?= =?UTF-8?q?age=20deletion=20functionality?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - add `delete_messages` function to delete messages based on label and query - add execute flag to processor struct to control the execution of deletion --- src/processor.rs | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/processor.rs b/src/processor.rs index 9033826..cb1fa22 100644 --- a/src/processor.rs +++ b/src/processor.rs @@ -1,12 +1,13 @@ // use crate::EolRule; -use crate::{Result, Trash, config::EolRule}; +use crate::{Delete, Result, Trash, config::EolRule}; /// Rule processor #[derive(Debug)] pub struct Processor { credential_file: String, rule: EolRule, + execute: bool, } impl Processor { @@ -14,6 +15,7 @@ impl Processor { Processor { credential_file, rule, + execute: false, } } @@ -31,4 +33,24 @@ impl Processor { messages_to_trash.run(0).await } + + async fn delete_messages(&self, label: &str) -> Result<()> { + let mut messages_to_delete = Delete::new(&self.credential_file).await?; + + messages_to_delete + .message_list() + .add_labels(&self.credential_file, &[label.to_string()]) + .await?; + + messages_to_delete + .message_list() + .set_query(&self.rule.eol_query()); + + messages_to_delete.prepare(0).await?; + if self.execute { + messages_to_delete.batch_delete().await + } else { + Ok(()) + } + } }