feat(cli): create message trait to share list parameters

- create message trait to share list parameters
- implement message trait for message and delete cli
This commit is contained in:
Jeremiah Russell
2025-10-14 07:27:23 +01:00
committed by Jeremiah Russell
parent e488cd25cf
commit 7b9be5f243

43
src/cli/message_trait.rs Normal file
View File

@@ -0,0 +1,43 @@
use cull_gmail::{GmailClient, MessageList, Result};
use crate::{delete_cli::DeleteCli, message_cli::MessageCli};
pub trait Message {
fn set_parameters(&self, client: &mut GmailClient) -> Result<()>;
}
impl Message for MessageCli {
fn set_parameters(&self, client: &mut GmailClient) -> Result<()> {
if !self.labels().is_empty() {
client.add_labels(self.labels())?;
}
if let Some(query) = self.query().as_ref() {
client.set_query(query)
}
log::trace!("Max results: `{}`", self.max_results());
client.set_max_results(self.max_results());
log::debug!("List max results set to {}", client.max_results());
Ok(())
}
}
impl Message for DeleteCli {
fn set_parameters(&self, client: &mut GmailClient) -> Result<()> {
if !self.labels().is_empty() {
client.add_labels(self.labels())?;
}
if let Some(query) = self.query().as_ref() {
client.set_query(query)
}
log::trace!("Max results: `{}`", self.max_results());
client.set_max_results(self.max_results());
log::debug!("List max results set to {}", client.max_results());
Ok(())
}
}