chore: reuse get collab folder

This commit is contained in:
khorshuheng 2024-09-03 15:40:33 +08:00
parent 89f43bb24a
commit a7a1a2f8a4
2 changed files with 24 additions and 22 deletions

View File

@ -169,26 +169,33 @@ pub async fn get_user_workspace_structure(
depth, depth_limit
)));
}
let folder = get_latest_collab_folder(collab_storage, &uid, &workspace_id).await?;
let folder =
get_latest_collab_folder(collab_storage, GetCollabOrigin::User { uid }, &workspace_id).await?;
let folder_view: FolderView = collab_folder_to_folder_view(&folder, depth);
Ok(folder_view)
}
pub async fn get_latest_collab_folder(
collab_storage: Arc<CollabAccessControlStorage>,
uid: &i64,
collab_origin: GetCollabOrigin,
workspace_id: &str,
) -> Result<Folder, AppError> {
let folder_uid = if let GetCollabOrigin::User { uid } = collab_origin {
uid
} else {
// Dummy uid to open the collab folder if the request does not originate from user
0
};
let encoded_collab = get_latest_collab_encoded(
collab_storage,
uid,
collab_origin,
workspace_id,
workspace_id,
CollabType::Folder,
)
.await?;
let folder = Folder::from_collab_doc_state(
uid,
folder_uid,
CollabOrigin::Server,
encoded_collab.into(),
workspace_id,
@ -200,14 +207,14 @@ pub async fn get_latest_collab_folder(
pub async fn get_latest_collab_encoded(
collab_storage: Arc<CollabAccessControlStorage>,
uid: &i64,
collab_origin: GetCollabOrigin,
workspace_id: &str,
oid: &str,
collab_type: CollabType,
) -> Result<EncodedCollab, AppError> {
collab_storage
.get_encode_collab(
GetCollabOrigin::User { uid: *uid },
collab_origin,
QueryCollabParams {
workspace_id: workspace_id.to_string(),
inner: QueryCollab {
@ -226,22 +233,12 @@ pub async fn get_published_view(
pg_pool: &PgPool,
) -> Result<PublishedView, AppError> {
let workspace_id = select_workspace_id_for_publish_namespace(pg_pool, &publish_namespace).await?;
let query_collab_params = QueryCollabParams::new(
workspace_id,
collab_entity::CollabType::Folder,
workspace_id,
);
let encoded_collab = collab_storage
.get_encode_collab(GetCollabOrigin::Server, query_collab_params, true)
.await?;
let folder = Folder::from_collab_doc_state(
0,
CollabOrigin::Server,
encoded_collab.into(),
let folder = get_latest_collab_folder(
collab_storage,
GetCollabOrigin::Server,
&workspace_id.to_string(),
vec![],
)
.map_err(|e| AppError::Unhandled(e.to_string()))?;
.await?;
let publish_view_ids = select_published_view_ids_for_workspace(pg_pool, workspace_id).await?;
let publish_view_ids: HashSet<String> = publish_view_ids
.into_iter()

View File

@ -12,6 +12,7 @@ use collab_entity::CollabType;
use collab_folder::{CollabOrigin, Folder, RepeatedViewIdentifier, View};
use collab_rt_entity::{ClientCollabMessage, UpdateSync};
use collab_rt_protocol::{Message, SyncMessage};
use database::collab::GetCollabOrigin;
use database::collab::{select_workspace_database_oid, CollabStorage};
use database::publish::select_published_data_for_view_id;
use database_entity::dto::CollabParams;
@ -165,7 +166,9 @@ impl PublishCollabDuplicator {
let mut ws_db_collab = {
let ws_database_ec = get_latest_collab_encoded(
collab_storage.clone(),
&duplicator_uid,
GetCollabOrigin::User {
uid: duplicator_uid,
},
&dest_workspace_id,
&ws_db_oid,
CollabType::WorkspaceDatabase,
@ -207,7 +210,9 @@ impl PublishCollabDuplicator {
let collab_folder_encoded = get_latest_collab_encoded(
collab_storage.clone(),
&duplicator_uid,
GetCollabOrigin::User {
uid: duplicator_uid,
},
&dest_workspace_id,
&dest_workspace_id,
CollabType::Folder,