From 4c6daf1fb7b8f6b4ceb51575069898481bc121a5 Mon Sep 17 00:00:00 2001 From: RafayAhmad7548 Date: Tue, 1 Sep 2026 19:58:14 +0500 Subject: [PATCH] feat(search): offset & limit options for search --- src/commands/search.rs | 14 ++++++++++---- src/main.rs | 10 ++++++++-- src/models/search.rs | 2 -- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/commands/search.rs b/src/commands/search.rs index f4c94a7..aa00fe0 100644 --- a/src/commands/search.rs +++ b/src/commands/search.rs @@ -18,13 +18,19 @@ struct SearchQueryParams { pub struct Search { query: String, + offset: Option, + limit: Option, } impl Search { const BASE_URL: &str = "https://api.modrinth.com/v2"; - pub fn new(query: String) -> Self { - Search { query } + pub fn new( + query: String, + offset: Option, + limit: Option, + ) -> Self { + Search { query, offset, limit } } pub async fn run(&self) -> Result<(), Box> { @@ -49,8 +55,8 @@ impl Search { let params = SearchQueryParams { query: self.query.clone(), facets: facets.into(), - offset: None, - limit: None, + offset: self.offset, + limit: self.limit, }; let res: SearchResult = client diff --git a/src/main.rs b/src/main.rs index eb6700d..207df55 100644 --- a/src/main.rs +++ b/src/main.rs @@ -56,6 +56,12 @@ enum Commands { Search { query: String, + + #[arg(long)] + offset: Option, + + #[arg(long, value_parser = clap::value_parser!(u32).range(1..=100))] + limit: Option, }, } @@ -90,8 +96,8 @@ async fn main() -> Result<(), Box> { let config = create.download_server().await?; create.save_config(config).await?; } - Commands::Search { query } => { - let search = Search::new(query); + Commands::Search { query, offset, limit } => { + let search = Search::new(query, offset, limit); search.run().await?; } } diff --git a/src/models/search.rs b/src/models/search.rs index 90c61f8..2be2b5e 100644 --- a/src/models/search.rs +++ b/src/models/search.rs @@ -3,8 +3,6 @@ use serde::Deserialize; #[derive(Deserialize)] pub struct SearchResult { pub hits: Vec, - pub offset: u32, - pub limit: u32, pub total_hits: u32, }