diff options
Diffstat (limited to 'src/models/search.rs')
-rw-r--r-- | src/models/search.rs | 49 |
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() + }, } } } |