feat: cloud workspace api (#4469)

* feat: workspace api

* feat: added cloud apis for add and delete workspace

* feat: add and delete workspace event handlers

* chore: rust fmt

* chore: save user workspace

* test: add test

* test: add test

* chore: add to gitignore

* feat: update api add name to workspace

* chore: cargo clippy and rename to create

* chore: add envrc and direnv to gitignore

* chore: change name to create workspace instead of add workspace

* chore: update client api rev

* feat: add create workspace impl

* chore: restore gitignore to original

* test: fix create workspace event test

* fix: change delete workspace input

* fix: compile

* fix: create workspace test

* feat: add error code for request payload too large

* chore: remove cargo backup files

* feat: add is async option for upload file handler

* chore: update client api version

---------

Co-authored-by: nathan <nathan@appflowy.io>
This commit is contained in:
Zack
2024-02-04 05:49:45 +08:00
committed by GitHub
parent 250f29f325
commit 08938b8c70
46 changed files with 457 additions and 128 deletions

View File

@ -8,7 +8,7 @@ use collab_folder::{
Folder, FolderData, Section, SectionItem, TrashInfo, View, ViewLayout, ViewUpdate, Workspace,
};
use parking_lot::{Mutex, RwLock};
use tracing::{error, event, info, instrument, Level};
use tracing::{error, info, instrument};
use collab_integrate::collab_builder::{AppFlowyCollabBuilder, CollabBuilderConfig};
use collab_integrate::{CollabKVDB, CollabPersistenceConfig};
@ -156,16 +156,8 @@ impl FolderManager {
) -> FlowyResult<()> {
let folder_doc_state = self
.cloud_service
.get_collab_doc_state_f(workspace_id, user_id, CollabType::Folder, workspace_id)
.get_folder_doc_state(workspace_id, user_id, CollabType::Folder, workspace_id)
.await?;
event!(
Level::INFO,
"Get folder updates via {}, number of updates: {}",
self.cloud_service.service_name(),
folder_doc_state.len()
);
if let Err(err) = self
.initialize(
user_id,
@ -176,10 +168,7 @@ impl FolderManager {
{
// If failed to open folder with remote data, open from local disk. After open from the local
// disk. the data will be synced to the remote server.
error!(
"Failed to initialize folder with error {}, fallback to use local data",
err
);
error!("initialize folder with error {:?}, fallback local", err);
self
.initialize(
user_id,
@ -213,7 +202,7 @@ impl FolderManager {
// when the user signs up for the first time.
let result = self
.cloud_service
.get_collab_doc_state_f(workspace_id, user_id, CollabType::Folder, workspace_id)
.get_folder_doc_state(workspace_id, user_id, CollabType::Folder, workspace_id)
.await
.map_err(FlowyError::from);
@ -249,8 +238,13 @@ impl FolderManager {
pub async fn clear(&self, _user_id: i64) {}
#[tracing::instrument(level = "info", skip_all, err)]
pub async fn create_workspace(&self, _params: CreateWorkspaceParams) -> FlowyResult<Workspace> {
Err(FlowyError::not_support())
pub async fn create_workspace(&self, params: CreateWorkspaceParams) -> FlowyResult<Workspace> {
let uid = self.user.user_id()?;
let new_workspace = self
.cloud_service
.create_workspace(uid, &params.name)
.await?;
Ok(new_workspace)
}
#[tracing::instrument(level = "info", skip_all, err)]