notion_client/objects/
data_source.rs1use 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}