From c7eb6a558124c7bc3305964c5b52c60528a1f0d4 Mon Sep 17 00:00:00 2001 From: Jeremiah Russell Date: Fri, 10 Oct 2025 15:19:36 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(processor):=20add=20trash=20an?= =?UTF-8?q?d=20delete=20message=20functionality?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - implements trash and delete messages functionality - adds EolAction enum to define action type - adds action method to the processor --- src/processor.rs | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/processor.rs b/src/processor.rs index cb1fa22..1638ffb 100644 --- a/src/processor.rs +++ b/src/processor.rs @@ -1,25 +1,32 @@ // use crate::EolRule; -use crate::{Delete, Result, Trash, config::EolRule}; +use crate::{Delete, EolAction, Result, Trash, config::EolRule}; /// Rule processor #[derive(Debug)] -pub struct Processor { +pub struct Processor<'a> { credential_file: String, - rule: EolRule, + rule: &'a EolRule, execute: bool, } -impl Processor { - fn new(credential_file: String, rule: EolRule) -> Self { +impl<'a> Processor<'a> { + /// Initialise a new processor + pub fn new(credential_file: &str, rule: &'a EolRule) -> Self { Processor { - credential_file, + credential_file: credential_file.to_string(), rule, execute: false, } } - async fn trash_messages(&self, label: &str) -> Result<()> { + /// The action set in the rule + pub fn action(&self) -> Option { + 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?; messages_to_trash @@ -34,7 +41,8 @@ impl Processor { 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?; messages_to_delete