use serde::{Deserialize, Serialize}; use std::collections::HashMap; #[derive(Debug, Clone, Serialize, Deserialize)] pub struct RichLabel { pub label: Option, pub key: Option, pub icon: Option, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct DataSourceReference { pub r#type: Option, pub name: Option, pub id: Option, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct UserInfo { pub avatar: Option, pub username: Option, pub userid: Option, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct EditorInfo { pub user: UserInfo, pub timestamp: Option, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct Document { pub id: String, pub created: Option, pub updated: Option, pub source: Option, pub r#type: Option, pub category: Option, pub subcategory: Option, pub categories: Option>, pub rich_categories: Option>, pub title: Option, pub summary: Option, pub lang: Option, pub content: Option, pub icon: Option, pub thumbnail: Option, pub cover: Option, pub tags: Option>, pub url: Option, pub size: Option, pub metadata: Option>, pub payload: Option>, pub owner: Option, pub last_updated_by: Option, } impl Document { pub fn new(source: Option, id: String, category: String, name: String, url: String) -> Self { Self { id, created: None, updated: None, source, r#type: None, category: Some(category), subcategory: None, categories: None, rich_categories: None, title: Some(name), summary: None, lang: None, content: None, icon: None, thumbnail: None, cover: None, tags: None, url: Some(url), size: None, metadata: None, payload: None, owner: None, last_updated_by: None, } } }