Return len
Some checks failed
CI / Typos (push) Successful in 31s
CI / Clippy (push) Successful in 1m17s
CI / Build and test (all features) (push) Failing after 5m32s
CI / Build and test (push) Failing after 7m49s

This commit is contained in:
2026-03-24 03:43:26 -07:00
parent 6f267880c8
commit f7ea25f059
5 changed files with 11 additions and 44 deletions

View File

@@ -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 }

View File

@@ -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<usize>,
}
#[derive(Debug, Deserialize)]
pub struct LookupResult {
pub score: f32,
pub source: String,
pub key: String,
}
#[derive(Debug, Deserialize)]
pub struct LookupResponse {
pub results: Vec<LookupResult>,
}
#[derive(Debug, Deserialize)]
pub struct ItemRef {
pub source: String,
pub key: String,
}
#[derive(Debug, Deserialize)]
pub struct ItemsResponse {
pub items: Vec<ItemRef>,
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,

View File

@@ -23,7 +23,7 @@ fn default_limit() -> usize {
100
}
#[derive(Serialize, ToSchema)]
#[derive(Debug, Serialize, Deserialize, ToSchema)]
pub struct ItemsResponse {
pub items: Vec<ItemRef>,
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,

View File

@@ -22,6 +22,7 @@ pub struct LookupRequest {
#[derive(Debug, Serialize, Deserialize, ToSchema)]
pub struct LookupResponse {
pub results: Vec<LookupResult>,
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();
}