chore: detailed error response for get page view (#1166)
This commit is contained in:
parent
c3bba778a2
commit
14c05479b0
|
|
@ -265,7 +265,8 @@ pub async fn select_web_user_from_uid(pool: &PgPool, uid: i64) -> Result<AFWebUs
|
||||||
uid
|
uid
|
||||||
)
|
)
|
||||||
.fetch_one(pool)
|
.fetch_one(pool)
|
||||||
.await?;
|
.await
|
||||||
|
.map_err(|err| anyhow::anyhow!("Unable to get user detail for {}: {}", uid, err))?;
|
||||||
|
|
||||||
Ok(row)
|
Ok(row)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -377,7 +377,14 @@ pub async fn get_latest_collab_folder(
|
||||||
workspace_id,
|
workspace_id,
|
||||||
CollabType::Folder,
|
CollabType::Folder,
|
||||||
)
|
)
|
||||||
.await?;
|
.await
|
||||||
|
.map_err(|err| {
|
||||||
|
AppError::Internal(anyhow::anyhow!(
|
||||||
|
"Unable to retrieve workspace folder {}: {}",
|
||||||
|
workspace_id,
|
||||||
|
err
|
||||||
|
))
|
||||||
|
})?;
|
||||||
let folder = Folder::from_collab_doc_state(
|
let folder = Folder::from_collab_doc_state(
|
||||||
folder_uid,
|
folder_uid,
|
||||||
CollabOrigin::Server,
|
CollabOrigin::Server,
|
||||||
|
|
@ -385,7 +392,13 @@ pub async fn get_latest_collab_folder(
|
||||||
workspace_id,
|
workspace_id,
|
||||||
vec![],
|
vec![],
|
||||||
)
|
)
|
||||||
.map_err(|e| AppError::Unhandled(e.to_string()))?;
|
.map_err(|e| {
|
||||||
|
AppError::Internal(anyhow::anyhow!(
|
||||||
|
"Unable to decode workspace folder {}: {}",
|
||||||
|
workspace_id,
|
||||||
|
e
|
||||||
|
))
|
||||||
|
})?;
|
||||||
Ok(folder)
|
Ok(folder)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1293,7 +1293,15 @@ pub async fn get_page_view_collab(
|
||||||
Some(uid) => Some(select_web_user_from_uid(pg_pool, uid).await?),
|
Some(uid) => Some(select_web_user_from_uid(pg_pool, uid).await?),
|
||||||
None => None,
|
None => None,
|
||||||
};
|
};
|
||||||
let publish_view_ids = select_published_view_ids_for_workspace(pg_pool, workspace_id).await?;
|
let publish_view_ids = select_published_view_ids_for_workspace(pg_pool, workspace_id)
|
||||||
|
.await
|
||||||
|
.map_err(|err| {
|
||||||
|
AppError::Internal(anyhow::anyhow!(
|
||||||
|
"Unable to obtain published view id for workspace {}: {}",
|
||||||
|
workspace_id,
|
||||||
|
err
|
||||||
|
))
|
||||||
|
})?;
|
||||||
let publish_view_ids: HashSet<String> = publish_view_ids
|
let publish_view_ids: HashSet<String> = publish_view_ids
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.map(|id| id.to_string())
|
.map(|id| id.to_string())
|
||||||
|
|
@ -1353,7 +1361,15 @@ async fn get_page_collab_data_for_database(
|
||||||
workspace_id: Uuid,
|
workspace_id: Uuid,
|
||||||
view_id: &str,
|
view_id: &str,
|
||||||
) -> Result<PageCollabData, AppError> {
|
) -> Result<PageCollabData, AppError> {
|
||||||
let ws_db_oid = select_workspace_database_oid(pg_pool, &workspace_id).await?;
|
let ws_db_oid = select_workspace_database_oid(pg_pool, &workspace_id)
|
||||||
|
.await
|
||||||
|
.map_err(|err| {
|
||||||
|
AppError::Internal(anyhow::anyhow!(
|
||||||
|
"Unable to find workspace database oid for {}: {}",
|
||||||
|
workspace_id,
|
||||||
|
err
|
||||||
|
))
|
||||||
|
})?;
|
||||||
let ws_db = get_latest_collab_encoded(
|
let ws_db = get_latest_collab_encoded(
|
||||||
collab_access_control_storage,
|
collab_access_control_storage,
|
||||||
GetCollabOrigin::User { uid },
|
GetCollabOrigin::User { uid },
|
||||||
|
|
@ -1361,8 +1377,22 @@ async fn get_page_collab_data_for_database(
|
||||||
&ws_db_oid,
|
&ws_db_oid,
|
||||||
CollabType::WorkspaceDatabase,
|
CollabType::WorkspaceDatabase,
|
||||||
)
|
)
|
||||||
.await?;
|
.await
|
||||||
let ws_db_collab = collab_from_doc_state(ws_db.doc_state.to_vec(), &ws_db_oid)?;
|
.map_err(|err| {
|
||||||
|
AppError::Internal(anyhow::anyhow!(
|
||||||
|
"Unable to get latest workspace database collab {}: {}",
|
||||||
|
&ws_db_oid,
|
||||||
|
err
|
||||||
|
))
|
||||||
|
})?;
|
||||||
|
let ws_db_collab =
|
||||||
|
collab_from_doc_state(ws_db.doc_state.to_vec(), &ws_db_oid).map_err(|err| {
|
||||||
|
AppError::Internal(anyhow::anyhow!(
|
||||||
|
"Unable to decode workspace database collab {}: {}",
|
||||||
|
&ws_db_oid,
|
||||||
|
err
|
||||||
|
))
|
||||||
|
})?;
|
||||||
let ws_db_body = WorkspaceDatabase::open(ws_db_collab).map_err(|err| {
|
let ws_db_body = WorkspaceDatabase::open(ws_db_collab).map_err(|err| {
|
||||||
AppError::Internal(anyhow!("Failed to open workspace database body: {}", err))
|
AppError::Internal(anyhow!("Failed to open workspace database body: {}", err))
|
||||||
})?;
|
})?;
|
||||||
|
|
@ -1382,7 +1412,14 @@ async fn get_page_collab_data_for_database(
|
||||||
&db_oid,
|
&db_oid,
|
||||||
CollabType::Database,
|
CollabType::Database,
|
||||||
)
|
)
|
||||||
.await?;
|
.await
|
||||||
|
.map_err(|err| {
|
||||||
|
AppError::Internal(anyhow::anyhow!(
|
||||||
|
"Unable to get latest database collab {}: {}",
|
||||||
|
&db_oid,
|
||||||
|
err
|
||||||
|
))
|
||||||
|
})?;
|
||||||
let db_collab = Collab::new_with_source(
|
let db_collab = Collab::new_with_source(
|
||||||
CollabOrigin::Server,
|
CollabOrigin::Server,
|
||||||
&db_oid,
|
&db_oid,
|
||||||
|
|
@ -1448,7 +1485,14 @@ async fn get_page_collab_data_for_database(
|
||||||
.collect();
|
.collect();
|
||||||
row_collabs
|
row_collabs
|
||||||
})
|
})
|
||||||
.await?;
|
.await
|
||||||
|
.map_err(|err| {
|
||||||
|
AppError::Internal(anyhow::anyhow!(
|
||||||
|
"Unable to get row data for database {}: {}",
|
||||||
|
&db_oid,
|
||||||
|
err
|
||||||
|
))
|
||||||
|
})?;
|
||||||
|
|
||||||
Ok(PageCollabData {
|
Ok(PageCollabData {
|
||||||
encoded_collab: db.doc_state.to_vec(),
|
encoded_collab: db.doc_state.to_vec(),
|
||||||
|
|
@ -1469,7 +1513,14 @@ async fn get_page_collab_data_for_document(
|
||||||
view_id,
|
view_id,
|
||||||
CollabType::Document,
|
CollabType::Document,
|
||||||
)
|
)
|
||||||
.await?;
|
.await
|
||||||
|
.map_err(|err| {
|
||||||
|
AppError::Internal(anyhow::anyhow!(
|
||||||
|
"Unable to get page collab data for {}: {}",
|
||||||
|
view_id,
|
||||||
|
err
|
||||||
|
))
|
||||||
|
})?;
|
||||||
Ok(PageCollabData {
|
Ok(PageCollabData {
|
||||||
encoded_collab: collab.doc_state.clone().to_vec(),
|
encoded_collab: collab.doc_state.clone().to_vec(),
|
||||||
row_data: HashMap::default(),
|
row_data: HashMap::default(),
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue