Return len
This commit is contained in:
1
Cargo.lock
generated
1
Cargo.lock
generated
@@ -2708,6 +2708,7 @@ dependencies = [
|
||||
"axum",
|
||||
"bytes",
|
||||
"futures-core",
|
||||
"pile-dataset",
|
||||
"reqwest",
|
||||
"serde",
|
||||
"thiserror",
|
||||
|
||||
@@ -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 }
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user