aboutsummaryrefslogtreecommitdiff
path: root/src/models/search.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/models/search.rs')
-rw-r--r--src/models/search.rs49
1 files changed, 28 insertions, 21 deletions
diff --git a/src/models/search.rs b/src/models/search.rs
index cc0cdf4..dcbd206 100644
--- a/src/models/search.rs
+++ b/src/models/search.rs
@@ -1,11 +1,11 @@
-use serde::{Deserialize, Serialize};
use chrono::{DateTime, Utc};
+use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug, Eq, PartialEq, Hash, Copy, Clone)]
#[serde(rename_all = "snake_case")]
pub enum SortDirection {
Ascending,
- Descending
+ Descending,
}
#[derive(Serialize, Deserialize, Debug, Eq, PartialEq, Hash, Copy, Clone)]
@@ -18,33 +18,32 @@ pub enum SortTimestamp {
#[serde(rename_all = "snake_case")]
pub enum FilterValue {
Page,
- Database
+ Database,
}
-
#[derive(Serialize, Deserialize, Debug, Eq, PartialEq, Hash, Copy, Clone)]
#[serde(rename_all = "snake_case")]
pub enum FilterProperty {
- Object
+ Object,
}
#[derive(Serialize, Deserialize, Debug, Eq, PartialEq, Clone)]
pub struct Sort {
direction: SortDirection,
- timestamp: SortTimestamp
+ timestamp: SortTimestamp,
}
#[derive(Serialize, Deserialize, Debug, Eq, PartialEq, Clone)]
pub struct Filter {
value: FilterValue,
- property: FilterProperty
+ property: FilterProperty,
}
#[derive(Serialize, Deserialize, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone)]
#[serde(transparent)]
pub struct PagingCursor(String);
-#[derive(Serialize, Debug, Eq, PartialEq, Default)]
+#[derive(Serialize, Debug, Eq, PartialEq, Default)]
pub struct SearchRequest {
#[serde(skip_serializing_if = "Option::is_none")]
query: Option<String>,
@@ -55,35 +54,43 @@ pub struct SearchRequest {
#[serde(skip_serializing_if = "Option::is_none")]
start_cursor: Option<PagingCursor>,
#[serde(skip_serializing_if = "Option::is_none")]
- page_size: Option<u8>
+ page_size: Option<u8>,
}
#[derive(Debug, Eq, PartialEq)]
pub enum NotionSearch {
Query(String),
- Sort{
+ Sort {
direction: SortDirection,
- timestamp: SortTimestamp
+ timestamp: SortTimestamp,
},
Filter {
value: FilterValue,
- property: FilterProperty
- }
+ property: FilterProperty,
+ },
}
impl From<NotionSearch> for SearchRequest {
fn from(search: NotionSearch) -> Self {
match search {
- NotionSearch::Query(query) => SearchRequest { query: Some(query), ..Default::default() },
- NotionSearch::Sort { direction, timestamp } => SearchRequest { sort: Some(Sort {
- direction, timestamp
- }), ..Default::default()},
- NotionSearch::Filter { value, property } => SearchRequest {
- filter: Some(Filter {
- value, property
+ NotionSearch::Query(query) => SearchRequest {
+ query: Some(query),
+ ..Default::default()
+ },
+ NotionSearch::Sort {
+ direction,
+ timestamp,
+ } => SearchRequest {
+ sort: Some(Sort {
+ direction,
+ timestamp,
}),
..Default::default()
- }
+ },
+ NotionSearch::Filter { value, property } => SearchRequest {
+ filter: Some(Filter { value, property }),
+ ..Default::default()
+ },
}
}
}