feat(processor): add trash and delete message functionality

- implements trash and delete messages functionality
- adds EolAction enum to define action type
- adds action method to the processor
This commit is contained in:
Jeremiah Russell
2025-10-10 15:19:36 +01:00
committed by Jeremiah Russell
parent 1c2e2da031
commit c7eb6a5581

View File

@@ -1,25 +1,32 @@
// use crate::EolRule; // use crate::EolRule;
use crate::{Delete, Result, Trash, config::EolRule}; use crate::{Delete, EolAction, Result, Trash, config::EolRule};
/// Rule processor /// Rule processor
#[derive(Debug)] #[derive(Debug)]
pub struct Processor { pub struct Processor<'a> {
credential_file: String, credential_file: String,
rule: EolRule, rule: &'a EolRule,
execute: bool, execute: bool,
} }
impl Processor { impl<'a> Processor<'a> {
fn new(credential_file: String, rule: EolRule) -> Self { /// Initialise a new processor
pub fn new(credential_file: &str, rule: &'a EolRule) -> Self {
Processor { Processor {
credential_file, credential_file: credential_file.to_string(),
rule, rule,
execute: false, execute: false,
} }
} }
async fn trash_messages(&self, label: &str) -> Result<()> { /// The action set in the rule
pub fn action(&self) -> Option<EolAction> {
self.rule.action()
}
/// Trash the messages
pub async fn trash_messages(&self, label: &str) -> Result<()> {
let mut messages_to_trash = Trash::new(&self.credential_file).await?; let mut messages_to_trash = Trash::new(&self.credential_file).await?;
messages_to_trash messages_to_trash
@@ -34,7 +41,8 @@ impl Processor {
messages_to_trash.run(0).await messages_to_trash.run(0).await
} }
async fn delete_messages(&self, label: &str) -> Result<()> { /// Delete the messages
pub async fn delete_messages(&self, label: &str) -> Result<()> {
let mut messages_to_delete = Delete::new(&self.credential_file).await?; let mut messages_to_delete = Delete::new(&self.credential_file).await?;
messages_to_delete messages_to_delete