diff options
-rw-r--r-- | src/models.rs | 1 | ||||
-rw-r--r-- | src/models/paging.rs | 13 | ||||
-rw-r--r-- | src/models/search.rs | 11 |
3 files changed, 17 insertions, 8 deletions
diff --git a/src/models.rs b/src/models.rs index 4d43a3f..291ca4f 100644 --- a/src/models.rs +++ b/src/models.rs @@ -1,3 +1,4 @@ +pub mod paging; pub mod properties; pub mod search; pub mod text; diff --git a/src/models/paging.rs b/src/models/paging.rs new file mode 100644 index 0000000..31244a2 --- /dev/null +++ b/src/models/paging.rs @@ -0,0 +1,13 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Serialize, Deserialize, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone)] +#[serde(transparent)] +pub struct PagingCursor(String); + +#[derive(Serialize, Debug, Eq, PartialEq, Default)] +pub struct Paging { + #[serde(skip_serializing_if = "Option::is_none")] + start_cursor: Option<PagingCursor>, + #[serde(skip_serializing_if = "Option::is_none")] + page_size: Option<u8>, +} diff --git a/src/models/search.rs b/src/models/search.rs index 32989e8..ee0bb51 100644 --- a/src/models/search.rs +++ b/src/models/search.rs @@ -1,3 +1,4 @@ +use crate::models::paging::Paging; use serde::{Deserialize, Serialize}; #[derive(Serialize, Deserialize, Debug, Eq, PartialEq, Hash, Copy, Clone)] @@ -38,10 +39,6 @@ pub struct Filter { property: FilterProperty, } -#[derive(Serialize, Deserialize, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Clone)] -#[serde(transparent)] -pub struct PagingCursor(String); - #[derive(Serialize, Debug, Eq, PartialEq, Default)] pub struct SearchRequest { #[serde(skip_serializing_if = "Option::is_none")] @@ -50,10 +47,8 @@ pub struct SearchRequest { sort: Option<Sort>, #[serde(skip_serializing_if = "Option::is_none")] filter: Option<Filter>, - #[serde(skip_serializing_if = "Option::is_none")] - start_cursor: Option<PagingCursor>, - #[serde(skip_serializing_if = "Option::is_none")] - page_size: Option<u8>, + #[serde(flatten)] + paging: Option<Paging>, } #[derive(Debug, Eq, PartialEq)] |