aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Jake Swenson <jake@jakeswenson.com> 2021-05-15 14:16:26 -0700
committerGravatar Jake Swenson <jake@jakeswenson.com> 2021-05-15 14:16:26 -0700
commitc9de25aa4e16d8352329c3d05b557af9cb9ab651 (patch)
tree31c82aada290e896135596704523ed1a3c6372b1 /src
parente0d25df23fac6e53c1a9962ecfdc730d762915bc (diff)
downloadnotion-c9de25aa4e16d8352329c3d05b557af9cb9ab651.tar.gz
notion-c9de25aa4e16d8352329c3d05b557af9cb9ab651.tar.zst
notion-c9de25aa4e16d8352329c3d05b557af9cb9ab651.zip
adding serialize to true
Diffstat (limited to 'src')
-rw-r--r--src/models/search.rs39
1 files changed, 38 insertions, 1 deletions
diff --git a/src/models/search.rs b/src/models/search.rs
index 7b14aa2..7cd23dd 100644
--- a/src/models/search.rs
+++ b/src/models/search.rs
@@ -1,5 +1,5 @@
use crate::models::paging::Paging;
-use serde::{Deserialize, Serialize};
+use serde::{Deserialize, Serialize, Serializer};
#[derive(Serialize, Deserialize, Debug, Eq, PartialEq, Hash, Copy, Clone)]
#[serde(rename_all = "snake_case")]
@@ -60,10 +60,19 @@ pub enum TextCondition {
DoesNotContain(String),
StartsWith(String),
EndsWith(String),
+ #[serde(serialize_with = "serialize_to_true")]
IsEmpty,
+ #[serde(serialize_with = "serialize_to_true")]
IsNotEmpty,
}
+fn serialize_to_true<S>(serializer: S) -> Result<S::Ok, S::Error>
+where
+ S: Serializer,
+{
+ serializer.serialize_bool(true)
+}
+
#[derive(Serialize, Deserialize, Debug, Eq, PartialEq, Clone)]
#[serde(rename_all = "lowercase")]
pub enum PropertyCondition {
@@ -144,5 +153,33 @@ mod tests {
Ok(())
}
+
+ #[test]
+ fn text_property_contains() -> Result<(), Box<dyn std::error::Error>> {
+ let json = serde_json::to_string(&FilterCondition {
+ property: "Name".to_string(),
+ condition: Text(TextCondition::Contains("Test".to_string())),
+ })?;
+ assert_eq!(
+ dbg!(json),
+ r#"{"property":"Name","text":{"contains":"Test"}}"#
+ );
+
+ Ok(())
+ }
+
+ #[test]
+ fn text_property_is_empty() -> Result<(), Box<dyn std::error::Error>> {
+ let json = serde_json::to_string(&FilterCondition {
+ property: "Name".to_string(),
+ condition: Text(TextCondition::IsEmpty),
+ })?;
+ assert_eq!(
+ dbg!(json),
+ r#"{"property":"Name","text":{"is_empty":true}}"#
+ );
+
+ Ok(())
+ }
}
}