feat(processor): implement rule processor

- implements struct `Processor` to manage rules for trashing messages
- adds method `trash_messages` to list and trash messages with labels and queries
This commit is contained in:
Jeremiah Russell
2025-10-10 14:42:42 +01:00
committed by Jeremiah Russell
parent 04308dbbef
commit 6ba563dacf

34
src/processor.rs Normal file
View File

@@ -0,0 +1,34 @@
// use crate::EolRule;
use crate::{Result, Trash, config::EolRule};
/// Rule processor
#[derive(Debug)]
pub struct Processor {
credential_file: String,
rule: EolRule,
}
impl Processor {
fn new(credential_file: String, rule: EolRule) -> Self {
Processor {
credential_file,
rule,
}
}
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?;
messages_to_trash
.message_list()
.set_query(&self.rule.eol_query());
messages_to_trash.run(0).await
}
}