Skip to main content

notion_client/objects/
data_source.rs

1use std::collections::HashMap;
2
3use chrono::{DateTime, Utc};
4use serde::{Deserialize, Serialize};
5use serde_with::skip_serializing_none;
6
7use super::{
8    database::DatabaseProperty, emoji::Emoji, file::File, native_icon::NativeIcon, parent::Parent,
9    rich_text::RichText, user::User,
10};
11
12#[skip_serializing_none]
13#[derive(Serialize, Deserialize, Eq, PartialEq, Debug, Clone)]
14pub struct DataSource {
15    pub object: Option<String>,
16    pub id: String,
17    pub created_time: DateTime<Utc>,
18    pub created_by: Option<User>,
19    pub last_edited_time: DateTime<Utc>,
20    pub last_edited_by: Option<User>,
21    pub title: Vec<RichText>,
22    pub description: Vec<RichText>,
23    pub icon: Option<Icon>,
24    pub cover: Option<File>,
25    pub properties: HashMap<String, DatabaseProperty>,
26    pub parent: Parent,
27    pub url: Option<String>,
28    pub public_url: Option<String>,
29    pub is_inline: Option<bool>,
30    pub in_trash: bool,
31}
32
33#[derive(Serialize, Deserialize, Debug, Eq, PartialEq, Clone, Default)]
34#[serde(rename_all = "snake_case", untagged)]
35pub enum Icon {
36    #[default]
37    None,
38    File(File),
39    Emoji(Emoji),
40    NativeIcon(NativeIcon),
41}