diff options
author | 2021-05-14 07:33:45 -0700 | |
---|---|---|
committer | 2021-05-14 07:33:45 -0700 | |
commit | 8a6ee9bca902db076be12745967a69c7c184e044 (patch) | |
tree | 480244bde1110a33bf4bcd7f18b2406ff7bc8571 /src/models/text.rs | |
parent | b22ae2cf8a9e2b6af1a54f79ecdb31ad4d2c31c5 (diff) | |
download | notion-8a6ee9bca902db076be12745967a69c7c184e044.tar.gz notion-8a6ee9bca902db076be12745967a69c7c184e044.tar.zst notion-8a6ee9bca902db076be12745967a69c7c184e044.zip |
split models
Diffstat (limited to 'src/models/text.rs')
-rw-r--r-- | src/models/text.rs | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/src/models/text.rs b/src/models/text.rs new file mode 100644 index 0000000..0baf183 --- /dev/null +++ b/src/models/text.rs @@ -0,0 +1,79 @@ +use serde::{Deserialize, Serialize}; + +#[derive(Serialize, Deserialize, Debug, Eq, PartialEq)] +#[serde(rename_all = "snake_case")] +pub enum TextColor { + Default, + Gray, + Brown, + Orange, + Yellow, + Green, + Blue, + Purple, + Pink, + Red, + GrayBackground, + BrownBackground, + OrangeBackground, + YellowBackground, + GreenBackground, + BlueBackground, + PurpleBackground, + PinkBackground, + RedBackground, +} + +/// Rich text annotations +/// See https://developers.notion.com/reference/rich-text#annotations +#[derive(Serialize, Deserialize, Debug, Eq, PartialEq)] +struct Annotations { + bold: bool, + code: bool, + color: TextColor, + italic: bool, + strikethrough: bool, + underline: bool, +} + +/// Properties common on all rich text objects +/// See https://developers.notion.com/reference/rich-text#all-rich-text +#[derive(Serialize, Deserialize, Debug, Eq, PartialEq)] +pub struct RichTextCommon { + plain_text: String, + href: Option<String>, + annotations: Annotations, +} + +#[derive(Serialize, Deserialize, Debug, Eq, PartialEq)] +pub struct Link { + url: String, +} + +#[derive(Serialize, Deserialize, Debug, Eq, PartialEq)] +pub struct Text { + content: String, + link: Option<String>, +} + +#[derive(Serialize, Deserialize, Debug, Eq, PartialEq)] +#[serde(tag = "type")] +#[serde(rename_all = "snake_case")] +pub enum RichText { + /// See https://developers.notion.com/reference/rich-text#text-objects + Text { + #[serde(flatten)] + rich_text: RichTextCommon, + text: Text, + }, + /// See https://developers.notion.com/reference/rich-text#mention-objects + Mention { + #[serde(flatten)] + rich_text: RichTextCommon, + }, + /// See https://developers.notion.com/reference/rich-text#equation-objects + Equation { + #[serde(flatten)] + rich_text: RichTextCommon, + }, +} |