feat: get published collab meta data

This commit is contained in:
Zack Fu Zi Xiang 2024-06-15 21:20:59 +08:00
parent de413844dc
commit 2ab59e79a3
No known key found for this signature in database
3 changed files with 51 additions and 8 deletions

View File

@ -878,6 +878,28 @@ pub async fn insert_or_replace_publish_collab_meta<'a, E: Executor<'a, Database
Ok(())
}
#[inline]
pub async fn select_publish_collab_meta<'a, E: Executor<'a, Database = Postgres>>(
executor: E,
workspace_id: &Uuid,
doc_name: &str,
) -> Result<serde_json::Value, AppError> {
let res = sqlx::query_scalar!(
r#"
SELECT metadata
FROM af_published_collab
WHERE workspace_id = $1
AND doc_name = $2
"#,
workspace_id,
doc_name,
)
.fetch_one(executor)
.await?;
Ok(res)
}
#[inline]
pub async fn delete_published_collab<'a, E: Executor<'a, Database = Postgres>>(
executor: E,

View File

@ -140,6 +140,7 @@ pub fn workspace_scope() -> Scope {
.service(
web::resource("/{workspace_id}/publish/{doc_name}")
.route(web::put().to(put_publish_collab_handler))
.route(web::get().to(get_publish_collab_handler))
.route(web::delete().to(delete_publish_collab_handler))
)
.service(
@ -977,7 +978,7 @@ async fn put_publish_collab_handler(
) -> Result<Json<AppResponse<()>>> {
let (workspace_id, doc_name) = path_param.into_inner();
let metadata = serde_json::Value::from(payload);
biz::workspace::ops::publish_workspace_collab(
biz::workspace::ops::publish_collab(
&state.pg_pool,
&workspace_id,
&doc_name,
@ -988,6 +989,16 @@ async fn put_publish_collab_handler(
Ok(Json(AppResponse::Ok()))
}
async fn get_publish_collab_handler(
path_param: web::Path<(Uuid, String)>,
state: Data<AppState>,
) -> Result<Json<AppResponse<serde_json::Value>>> {
let (workspace_id, doc_name) = path_param.into_inner();
let metadata =
biz::workspace::ops::get_publish_collab(&state.pg_pool, &workspace_id, &doc_name).await?;
Ok(Json(AppResponse::Ok().with_data(metadata)))
}
async fn put_publish_collab_blob_handler(
path_param: web::Path<(Uuid, String)>,
user_uuid: UserUuid,

View File

@ -20,12 +20,13 @@ use database::workspace::{
change_workspace_icon, delete_from_workspace, delete_published_collab, delete_workspace_members,
get_invitation_by_id, insert_or_replace_publish_collab_meta,
insert_or_replace_published_collab_blob, insert_user_workspace, insert_workspace_invitation,
rename_workspace, select_all_user_workspaces, select_published_collab_blob,
select_user_is_collab_publisher, select_user_is_workspace_owner, select_workspace,
select_workspace_invitations_for_user, select_workspace_member, select_workspace_member_list,
select_workspace_settings, select_workspace_total_collab_bytes, update_updated_at_of_workspace,
update_workspace_invitation_set_status_accepted, update_workspace_publish_namespace,
upsert_workspace_member, upsert_workspace_member_with_txn, upsert_workspace_settings,
rename_workspace, select_all_user_workspaces, select_publish_collab_meta,
select_published_collab_blob, select_user_is_collab_publisher, select_user_is_workspace_owner,
select_workspace, select_workspace_invitations_for_user, select_workspace_member,
select_workspace_member_list, select_workspace_settings, select_workspace_total_collab_bytes,
update_updated_at_of_workspace, update_workspace_invitation_set_status_accepted,
update_workspace_publish_namespace, upsert_workspace_member, upsert_workspace_member_with_txn,
upsert_workspace_settings,
};
use database_entity::dto::{
AFAccessLevel, AFRole, AFWorkspace, AFWorkspaceInvitation, AFWorkspaceInvitationStatus,
@ -128,7 +129,7 @@ pub async fn update_workspace_namespace(
Ok(())
}
pub async fn publish_workspace_collab(
pub async fn publish_collab(
pg_pool: &PgPool,
workspace_id: &Uuid,
doc_name: &str,
@ -152,6 +153,15 @@ pub async fn put_published_collab_blob(
Ok(())
}
pub async fn get_publish_collab(
pg_pool: &PgPool,
workspace_id: &Uuid,
doc_name: &str,
) -> Result<serde_json::Value, AppError> {
let metadata = select_publish_collab_meta(pg_pool, workspace_id, doc_name).await?;
Ok(metadata)
}
pub async fn get_published_collab_blob(
pg_pool: &PgPool,
workspace_id: &Uuid,