1use google_gmail1::api::BatchDeleteMessagesRequest;
2
3use crate::{MessageList, Result};
4
5#[derive(Debug)]
7pub struct Delete {
8 message_list: MessageList,
9}
10
11impl Delete {
12 pub async fn new(credential: &str) -> Result<Self> {
14 let message_list = MessageList::new(credential).await?;
15 Ok(Delete { message_list })
16 }
17
18 pub fn message_list(&mut self) -> &mut MessageList {
20 &mut self.message_list
21 }
22
23 pub async fn prepare(&mut self, pages: u32) -> Result<()> {
25 self.message_list.run(pages).await
26 }
27
28 pub async fn batch_delete(&self) -> Result<()> {
30 let ids = Some(self.message_list.message_ids());
31
32 let batch_request = BatchDeleteMessagesRequest { ids };
33
34 log::trace!("{batch_request:#?}");
35
36 let _res = self
37 .message_list
38 .hub()
39 .users()
40 .messages_batch_delete(batch_request, "me")
41 .add_scope("https://mail.google.com/")
42 .doit()
43 .await
44 .map_err(Box::new)?;
45
46 for m in self.message_list.messages() {
47 log::info!("Message with subject `{}` deleted.", m.subject());
48 }
49
50 Ok(())
51 }
52}