use schemars::JsonSchema;
use serde::Deserialize;
#[derive(Debug, Deserialize, JsonSchema)]
pub struct IngestParams {
#[serde(default)]
pub query: Option<String>,
#[serde(default = "default_source")]
pub source: String,
#[serde(default = "default_limit")]
pub limit: usize,
#[serde(default)]
pub path: Option<String>,
#[serde(default)]
pub topic: Option<String>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct ImportPapersParams {
pub path: String,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct PaperBodyParams {
pub id: String,
pub query: Option<String>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct PaperReferencesParams {
pub id: String,
pub direction: Option<String>,
pub intents: Option<bool>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct QueryPapersParams {
pub query: String,
#[serde(default = "default_query_limit")]
pub limit: usize,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct MissingKeywordsParams {
#[serde(default = "default_query_limit")]
pub limit: usize,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct EnrichPaperParams {
pub id: String,
pub keywords: String,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct TopicBriefParams {
pub topic: String,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct GapInput {
pub description: String,
#[serde(default)]
pub gap_type: Option<String>,
#[serde(default)]
pub priority: Option<f32>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct GapsRecordParams {
pub topic: String,
pub gaps: Vec<GapInput>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct ListGapsParams {
#[serde(default)]
pub topic: Option<String>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct ReportTopicParams {
pub topics: String,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct ReportSaveParams {
pub title: String,
pub topics: String,
pub markdown: String,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct TopicAddParams {
pub name: String,
#[serde(default)]
pub description: String,
#[serde(default)]
pub parent: Option<String>,
}
#[derive(Debug, Deserialize, JsonSchema)]
pub struct UpdateReadParams {
pub id: String,
#[serde(default)]
pub status: Option<String>,
#[serde(default)]
pub rating: Option<u8>,
}
fn default_source() -> String {
"all".to_string()
}
fn default_limit() -> usize {
10
}
fn default_query_limit() -> usize {
20
}