♻️ refactor(delete): restructure delete functionality

- remove Delete struct
- implement Delete trait for GmailClient
- move prepare and batch_delete functions to GmailClient
- update imports to reflect changes
This commit is contained in:
Jeremiah Russell
2025-10-13 15:52:11 +01:00
committed by Jeremiah Russell
parent 2ef8f2f7f3
commit 0ebfde4912

View File

@@ -1,40 +1,33 @@
use google_gmail1::api::BatchDeleteMessagesRequest; use google_gmail1::api::BatchDeleteMessagesRequest;
use crate::{GmailClient, MessageList, Result}; use crate::{GmailClient, Result, message_list::MessageList};
/// Struct for deleting messages // /// Struct for deleting messages
#[derive(Debug)] // #[derive(Debug)]
pub struct Delete { // pub struct Delete {
message_list: MessageList, // message_list: MessageList,
// }
pub(crate) trait Delete {
async fn batch_delete(&self) -> Result<()>;
async fn prepare(&mut self, pages: u32) -> Result<()>;
} }
impl Delete { impl Delete for GmailClient {
/// Create a new Delete struct
pub async fn new(client: &GmailClient) -> Result<Self> {
let message_list = MessageList::new(client).await?;
Ok(Delete { message_list })
}
/// return the message list struct
pub fn message_list(&mut self) -> &mut MessageList {
&mut self.message_list
}
/// Prepare the message list for delete to be completed on execute by batch_delete /// Prepare the message list for delete to be completed on execute by batch_delete
pub async fn prepare(&mut self, pages: u32) -> Result<()> { async fn prepare(&mut self, pages: u32) -> Result<()> {
self.message_list.run(pages).await self.run(pages).await
} }
/// Run the batch delete on the selected messages /// Run the batch delete on the selected messages
pub async fn batch_delete(&self) -> Result<()> { async fn batch_delete(&self) -> Result<()> {
let ids = Some(self.message_list.message_ids()); let ids = Some(self.message_ids());
let batch_request = BatchDeleteMessagesRequest { ids }; let batch_request = BatchDeleteMessagesRequest { ids };
log::trace!("{batch_request:#?}"); log::trace!("{batch_request:#?}");
let _res = self let _res = self
.message_list
.hub() .hub()
.users() .users()
.messages_batch_delete(batch_request, "me") .messages_batch_delete(batch_request, "me")
@@ -43,7 +36,7 @@ impl Delete {
.await .await
.map_err(Box::new)?; .map_err(Box::new)?;
for m in self.message_list.messages() { for m in self.messages() {
log::info!("Message with subject `{}` deleted.", m.subject()); log::info!("Message with subject `{}` deleted.", m.subject());
} }