Nathan.fooo 8036d070ad
feat: create the default workspace on cloud when using appflowy cloud (#4040)
* chore: sync strategy for collab type

* chore: update rev id

* chore: update rev id

* ci: fix test

* ci: fix test
2023-11-29 07:49:47 +08:00

58 lines
1.5 KiB
Rust

pub use anyhow::Error;
pub use collab_folder::{Folder, FolderData, Workspace};
use uuid::Uuid;
use lib_infra::future::FutureResult;
/// [FolderCloudService] represents the cloud service for folder.
pub trait FolderCloudService: Send + Sync + 'static {
/// Creates a new workspace for the user.
/// Returns error if the cloud service doesn't support multiple workspaces
fn create_workspace(&self, uid: i64, name: &str) -> FutureResult<Workspace, Error>;
fn open_workspace(&self, workspace_id: &str) -> FutureResult<(), Error>;
/// Returns all workspaces of the user.
/// Returns vec![] if the cloud service doesn't support multiple workspaces
fn get_all_workspace(&self) -> FutureResult<Vec<WorkspaceRecord>, Error>;
fn get_folder_data(
&self,
workspace_id: &str,
uid: &i64,
) -> FutureResult<Option<FolderData>, Error>;
fn get_folder_snapshots(
&self,
workspace_id: &str,
limit: usize,
) -> FutureResult<Vec<FolderSnapshot>, Error>;
fn get_folder_doc_state(&self, workspace_id: &str, uid: i64)
-> FutureResult<Vec<Vec<u8>>, Error>;
fn service_name(&self) -> String;
}
pub struct FolderSnapshot {
pub snapshot_id: i64,
pub database_id: String,
pub data: Vec<u8>,
pub created_at: i64,
}
pub fn gen_workspace_id() -> Uuid {
uuid::Uuid::new_v4()
}
pub fn gen_view_id() -> Uuid {
uuid::Uuid::new_v4()
}
#[derive(Debug)]
pub struct WorkspaceRecord {
pub id: String,
pub name: String,
pub created_at: i64,
}