64 lines
1.8 KiB
Rust
64 lines
1.8 KiB
Rust
use serde::{Deserialize, Serialize};
|
|||
|
|
use serde_json::Value;
|
||
|
|
|
||
|
|
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
|
||
|
|
#[serde(rename_all = "camelCase")]
|
||
|
|
pub struct SearchQuery {
|
||
|
|
pub query: String,
|
||
|
|
pub workspace_id: String,
|
||
|
|
pub scope: SearchScope,
|
||
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||
|
|
pub page_id: Option<String>,
|
||
|
|
pub limit: u32,
|
||
|
|
}
|
||
|
|
|
||
|
|
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
|
||
|
|
#[serde(rename_all = "camelCase")]
|
||
|
|
pub enum SearchScope {
|
||
|
|
Workspace,
|
||
|
|
CurrentPage,
|
||
|
|
Pinned,
|
||
|
|
Recent,
|
||
|
|
}
|
||
|
|
|
||
|
|
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
|
||
|
|
#[serde(rename_all = "camelCase")]
|
||
|
|
pub struct SearchResultProjection {
|
||
|
|
pub id: String,
|
||
|
|
pub title: String,
|
||
|
|
pub snippet: String,
|
||
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||
|
|
pub updated_at: Option<String>,
|
||
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||
|
|
pub created_at: Option<String>,
|
||
|
|
pub match_field: String,
|
||
|
|
pub has_ocr: bool,
|
||
|
|
pub public_path: String,
|
||
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||
|
|
pub node_id: Option<String>,
|
||
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||
|
|
pub subtree_root_id: Option<String>,
|
||
|
|
#[serde(default)]
|
||
|
|
pub evidence: Vec<SearchHighlight>,
|
||
|
|
pub score: f64,
|
||
|
|
pub projection_owner: SearchProjectionOwner,
|
||
|
|
}
|
||
|
|
|
||
|
|
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
|
||
|
|
#[serde(rename_all = "camelCase")]
|
||
|
|
pub struct SearchHighlight {
|
||
|
|
pub kind: String,
|
||
|
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||
|
|
pub node_id: Option<String>,
|
||
|
|
pub snippet: String,
|
||
|
|
#[serde(default, skip_serializing_if = "Value::is_null")]
|
||
|
|
pub meta: Value,
|
||
|
|
}
|
||
|
|
|
||
|
|
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
|
||
|
|
#[serde(rename_all = "kebab-case")]
|
||
|
|
pub enum SearchProjectionOwner {
|
||
|
|
RustKernel,
|
||
|
|
CompatIndex,
|
||
|
|
}
|