tdm_server_rust/entity/
search.rs1use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Clone, Deserialize)]
9#[serde(rename_all = "camelCase")]
10pub struct GlobalSearchQuery {
11 #[serde(default)]
13 pub q: String,
14 #[serde(default, rename = "type")]
16 pub search_type: Option<String>,
17 #[serde(default = "default_page")]
19 pub page: i32,
20 #[serde(default = "default_page_size")]
22 pub page_size: i32,
23}
24
25#[derive(Debug, Clone, Serialize, Deserialize)]
27#[serde(rename_all = "camelCase")]
28pub struct GlobalSearchResponse {
29 pub query: String,
31 #[serde(rename = "type")]
33 pub search_type: String,
34 pub page: i32,
36 pub page_size: i32,
38 pub total: i64,
40 pub sections: Vec<GlobalSearchSectionCount>,
42 pub hits: Vec<GlobalSearchHit>,
44}
45
46#[derive(Debug, Clone, Serialize, Deserialize)]
48#[serde(rename_all = "camelCase")]
49pub struct GlobalSearchSectionCount {
50 pub kind: String,
52 pub label: String,
54 pub total: i64,
56}
57
58#[derive(Debug, Clone, Serialize, Deserialize)]
60#[serde(rename_all = "camelCase")]
61pub struct GlobalSearchHit {
62 pub id: String,
64 pub kind: String,
66 pub kind_label: String,
68 pub title: String,
70 pub subtitle: Option<String>,
72 pub highlight: Option<String>,
74 pub route: String,
76 pub image_url: Option<String>,
78 pub avatar_url: Option<String>,
80 pub score: f64,
82 pub updated_at: Option<String>,
84}
85
86fn default_page() -> i32 {
88 1
89}
90
91fn default_page_size() -> i32 {
93 20
94}