From f7ea25f059aba15f89f5fbd500d49d5f92638946 Mon Sep 17 00:00:00 2001 From: rm-dr <96270320+rm-dr@users.noreply.github.com> Date: Tue, 24 Mar 2026 03:43:26 -0700 Subject: [PATCH] Return len --- Cargo.lock | 1 + crates/pile-client/Cargo.toml | 2 ++ crates/pile-client/src/lib.rs | 43 ++----------------------- crates/pile-dataset/src/serve/items.rs | 4 +-- crates/pile-dataset/src/serve/lookup.rs | 5 ++- 5 files changed, 11 insertions(+), 44 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 40fd616..ed1b99d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2708,6 +2708,7 @@ dependencies = [ "axum", "bytes", "futures-core", + "pile-dataset", "reqwest", "serde", "thiserror", diff --git a/crates/pile-client/Cargo.toml b/crates/pile-client/Cargo.toml index e51e893..f35817c 100644 --- a/crates/pile-client/Cargo.toml +++ b/crates/pile-client/Cargo.toml @@ -8,6 +8,8 @@ edition = { workspace = true } workspace = true [dependencies] +pile-dataset = { workspace = true, features = ["axum"] } + reqwest = { version = "0.12", features = ["json", "stream"] } futures-core = "0.3" serde = { workspace = true } diff --git a/crates/pile-client/src/lib.rs b/crates/pile-client/src/lib.rs index 35bdbae..ee16c2a 100644 --- a/crates/pile-client/src/lib.rs +++ b/crates/pile-client/src/lib.rs @@ -5,14 +5,12 @@ use axum::{ use bytes::Bytes; use futures_core::Stream; use reqwest::{Client, StatusCode, header}; -use serde::{Deserialize, Serialize}; +use serde::Deserialize; use std::pin::Pin; use thiserror::Error; use tracing::{trace, warn}; -// -// MARK: Error -// +pub use pile_dataset::serve::{ItemsResponse, LookupRequest, LookupResponse}; #[derive(Debug, Error)] pub enum ClientError { @@ -26,48 +24,11 @@ pub enum ClientError { Reqwest(#[from] reqwest::Error), } -// -// MARK: Response types -// - #[derive(Debug, Deserialize)] pub struct DatasetInfo { pub name: String, } -#[derive(Debug, Serialize)] -pub struct LookupRequest { - pub query: String, - #[serde(skip_serializing_if = "Option::is_none")] - pub limit: Option, -} - -#[derive(Debug, Deserialize)] -pub struct LookupResult { - pub score: f32, - pub source: String, - pub key: String, -} - -#[derive(Debug, Deserialize)] -pub struct LookupResponse { - pub results: Vec, -} - -#[derive(Debug, Deserialize)] -pub struct ItemRef { - pub source: String, - pub key: String, -} - -#[derive(Debug, Deserialize)] -pub struct ItemsResponse { - pub items: Vec, - pub total: usize, - pub offset: usize, - pub limit: usize, -} - /// Raw field response: the content-type and body bytes as returned by the server. pub struct FieldResponse { pub content_type: String, diff --git a/crates/pile-dataset/src/serve/items.rs b/crates/pile-dataset/src/serve/items.rs index 8706017..c411604 100644 --- a/crates/pile-dataset/src/serve/items.rs +++ b/crates/pile-dataset/src/serve/items.rs @@ -23,7 +23,7 @@ fn default_limit() -> usize { 100 } -#[derive(Serialize, ToSchema)] +#[derive(Debug, Serialize, Deserialize, ToSchema)] pub struct ItemsResponse { pub items: Vec, pub total: usize, @@ -31,7 +31,7 @@ pub struct ItemsResponse { pub limit: usize, } -#[derive(Serialize, ToSchema)] +#[derive(Debug, Serialize, Deserialize, ToSchema)] pub struct ItemRef { pub source: String, pub key: String, diff --git a/crates/pile-dataset/src/serve/lookup.rs b/crates/pile-dataset/src/serve/lookup.rs index 005cfbe..780ee83 100644 --- a/crates/pile-dataset/src/serve/lookup.rs +++ b/crates/pile-dataset/src/serve/lookup.rs @@ -22,6 +22,7 @@ pub struct LookupRequest { #[derive(Debug, Serialize, Deserialize, ToSchema)] pub struct LookupResponse { pub results: Vec, + pub total: u64, } #[derive(Debug, Serialize, Deserialize, ToSchema)] @@ -66,6 +67,8 @@ pub async fn lookup( } }; + let total: u64 = state.sources.iter().map(|x| x.1.len() as u64).sum(); + debug!( message = "Served /lookup", query = body.query, @@ -73,5 +76,5 @@ pub async fn lookup( time_ms = start.elapsed().as_millis() ); - return (StatusCode::OK, Json(LookupResponse { results })).into_response(); + return (StatusCode::OK, Json(LookupResponse { results, total })).into_response(); }