use crate::folder_builder::ParentChildViews; use collab_folder::{ViewIcon, ViewLayout}; use serde::{Deserialize, Serialize}; use std::collections::HashMap; pub enum ImportData { AppFlowyDataFolder { items: Vec }, } pub enum AppFlowyData { Folder { views: Vec, /// Used to update the [DatabaseViewTrackerList] when importing the database. database_view_ids_by_database_id: HashMap>, }, CollabObject { row_object_ids: Vec, document_object_ids: Vec, database_object_ids: Vec, }, } pub struct ImportViews { pub views: Vec, /// Used to update the [DatabaseViewTrackerList] when importing the database. pub database_view_ids_by_database_id: HashMap>, } pub struct SearchData { /// The type of data that is stored in the search index row. pub index_type: String, /// The `View` that the row references. pub view_id: String, /// The ID that corresponds to the type that is stored. /// View: view_id /// Document: page_id pub id: String, /// The data that is stored in the search index row. pub data: String, } #[derive(Serialize, Clone, Debug, Eq, PartialEq)] pub struct PublishViewInfo { pub view_id: String, pub name: String, pub icon: Option, pub layout: ViewLayout, pub extra: Option, pub created_by: Option, pub last_edited_by: Option, pub last_edited_time: i64, pub created_at: i64, pub child_views: Option>, } #[derive(Serialize, Clone, Debug, Eq, PartialEq)] pub struct PublishViewMetaData { pub view: PublishViewInfo, pub child_views: Vec, pub ancestor_views: Vec, } #[derive(Clone, Debug, Eq, PartialEq)] pub struct PublishViewMeta { pub metadata: PublishViewMetaData, pub view_id: String, pub publish_name: String, } #[derive(Debug, Clone, Serialize, Deserialize, Default, Eq, PartialEq)] pub struct PublishDatabaseData { /// The encoded collab data for the database itself pub database_collab: Vec, /// The encoded collab data for the database rows /// Use the row_id as the key pub database_row_collabs: HashMap>, /// The encoded collab data for the documents inside the database rows pub database_row_document_collabs: HashMap>, /// Visible view ids pub visible_database_view_ids: Vec, /// Relation view id map pub database_relations: HashMap, } #[derive(Clone, Debug, Eq, PartialEq)] pub struct PublishDocumentPayload { pub meta: PublishViewMeta, /// The encoded collab data for the document pub data: Vec, } #[derive(Clone, Debug, Eq, PartialEq)] pub struct PublishDatabasePayload { pub meta: PublishViewMeta, pub data: PublishDatabaseData, } #[derive(Clone, Debug, Eq, PartialEq)] pub enum PublishPayload { Document(PublishDocumentPayload), Database(PublishDatabasePayload), Unknown, } #[derive(Clone, Debug, Eq, PartialEq)] pub struct PublishInfoResponse { pub view_id: String, /// One part of publish url: /{namespace}/{publish_name} pub namespace: Option, pub publish_name: String, }