feat(processor): implement message deletion functionality

- add `delete_messages` function to delete messages based on label and query
- add execute flag to processor struct to control the execution of deletion
This commit is contained in:
Jeremiah Russell
2025-10-10 14:48:39 +01:00
committed by Jeremiah Russell
parent 66edab897f
commit 629c9d2e46

View File

@@ -1,12 +1,13 @@
// use crate::EolRule; // use crate::EolRule;
use crate::{Result, Trash, config::EolRule}; use crate::{Delete, Result, Trash, config::EolRule};
/// Rule processor /// Rule processor
#[derive(Debug)] #[derive(Debug)]
pub struct Processor { pub struct Processor {
credential_file: String, credential_file: String,
rule: EolRule, rule: EolRule,
execute: bool,
} }
impl Processor { impl Processor {
@@ -14,6 +15,7 @@ impl Processor {
Processor { Processor {
credential_file, credential_file,
rule, rule,
execute: false,
} }
} }
@@ -31,4 +33,24 @@ impl Processor {
messages_to_trash.run(0).await 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(())
}
}
} }