simple-web-app

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

commit 799c3db15832316cd75854b4a80f39b243da3eb6
parent 4b0566a5e8dd0ba2c284f2cc5fd006a0773373d0
Author: Silas Brack <silasbrack@gmail.com>
Date:   Sat, 25 Apr 2026 11:20:57 +0200

fix: correct TrailBase API filter syntax and response handling

- Remove 'filter=' prefix from query params
- Handle both cursor and total_count in responses

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

Diffstat:
Msrc/trailbase.rs | 14+++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/src/trailbase.rs b/src/trailbase.rs @@ -25,8 +25,12 @@ pub struct SearchResult { #[derive(Debug, Deserialize)] struct ListResponse<T> { records: Vec<T>, + #[serde(default)] #[allow(dead_code)] cursor: Option<String>, + #[serde(default)] + #[allow(dead_code)] + total_count: Option<i64>, } #[derive(Debug, Serialize)] @@ -118,7 +122,7 @@ impl TrailbaseClient { _max_published_time: &str, ) -> Result<Vec<NewsItem>, ClientError> { let url = format!( - "{}/api/records/v1/news_item_category?filter=category_id={}", + "{}/api/records/v1/news_item_category?category_id={}", self.base_url, category_id ); let response: ListResponse<serde_json::Value> = self.get_json(&url).await?; @@ -139,7 +143,7 @@ impl TrailbaseClient { .collect::<Vec<_>>() .join(","); let url = format!( - "{}/api/records/v1/news_item?filter={}&limit={}&offset={}&order=-published", + "{}/api/records/v1/news_item?{}&limit={}&offset={}&order=-published", self.base_url, ids_filter, limit, offset ); let response: ListResponse<NewsItem> = self.get_json(&url).await?; @@ -160,7 +164,7 @@ impl TrailbaseClient { news_item_id: i64, ) -> Result<Vec<Category>, ClientError> { let url = format!( - "{}/api/records/v1/news_item_category?filter=news_item_id={}", + "{}/api/records/v1/news_item_category?news_item_id={}", self.base_url, news_item_id ); let response: ListResponse<serde_json::Value> = self.get_json(&url).await?; @@ -181,7 +185,7 @@ impl TrailbaseClient { .collect::<Vec<_>>() .join(","); let url = format!( - "{}/api/records/v1/category?filter={}", + "{}/api/records/v1/category?{}", self.base_url, ids_filter ); let response: ListResponse<Category> = self.get_json(&url).await?; @@ -205,7 +209,7 @@ impl TrailbaseClient { .collect(); let url = format!( - "{}/api/records/v1/news_item?filter=title~{}&limit={}", + "{}/api/records/v1/news_item?title~{}&limit={}", self.base_url, encoded, limit ); let response: ListResponse<NewsItem> = self.get_json(&url).await?;