From e488cd25cf3021819e2c7467ba1520fe60f5fbca Mon Sep 17 00:00:00 2001 From: Jeremiah Russell Date: Tue, 14 Oct 2025 07:27:15 +0100 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor(cli):=20streamlin?= =?UTF-8?q?e=20message=20retrieval=20and=20parameter=20setting?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - extract parameter setting logic into a separate function `set_parameters` - consolidate label adding, query setting, and max results setting into `set_parameters` - rename `run` to `get_messages` for clarity - add methods for retrieving labels, query, and max_results --- src/cli/message_cli.rs | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/src/cli/message_cli.rs b/src/cli/message_cli.rs index de3b042..67f0532 100644 --- a/src/cli/message_cli.rs +++ b/src/cli/message_cli.rs @@ -1,6 +1,8 @@ use clap::Parser; use cull_gmail::{GmailClient, MessageList, Result}; +use crate::message_trait::Message; + /// Command line options for the list subcommand #[derive(Debug, Parser)] pub struct MessageCli { @@ -20,18 +22,20 @@ pub struct MessageCli { impl MessageCli { pub(crate) async fn run(&self, client: &mut GmailClient) -> Result<()> { - if !self.labels.is_empty() { - client.add_labels(&self.labels).await?; - } + self.set_parameters(client)?; - if let Some(query) = self.query.as_ref() { - client.set_query(query) - } + client.get_messages(self.pages).await + } - log::trace!("Max results: `{}`", self.max_results); - client.set_max_results(self.max_results); - log::debug!("List max results set to {}", client.max_results()); + pub(crate) fn labels(&self) -> &Vec { + &self.labels + } - client.run(self.pages).await + pub(crate) fn query(&self) -> &Option { + &self.query + } + + pub(crate) fn max_results(&self) -> u32 { + self.max_results } }