✨ 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:
committed by
Jeremiah Russell
parent
66edab897f
commit
629c9d2e46
@@ -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(())
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user