fix: web update should update both disk and mem cache
This commit is contained in:
parent
445d3af5fa
commit
aa64b7cd6b
|
|
@ -94,7 +94,7 @@ pub trait CollabStorage: Send + Sync + 'static {
|
||||||
/// # Returns
|
/// # Returns
|
||||||
///
|
///
|
||||||
/// * `Result<()>` - Returns `Ok(())` if the collaboration was created successfully, `Err` otherwise.
|
/// * `Result<()>` - Returns `Ok(())` if the collaboration was created successfully, `Err` otherwise.
|
||||||
async fn insert_new_collab_with_transaction(
|
async fn upsert_new_collab_with_transaction(
|
||||||
&self,
|
&self,
|
||||||
workspace_id: &str,
|
workspace_id: &str,
|
||||||
uid: &i64,
|
uid: &i64,
|
||||||
|
|
|
||||||
|
|
@ -343,7 +343,7 @@ where
|
||||||
|
|
||||||
#[instrument(level = "trace", skip(self, params), oid = %params.oid, ty = %params.collab_type, err)]
|
#[instrument(level = "trace", skip(self, params), oid = %params.oid, ty = %params.collab_type, err)]
|
||||||
#[allow(clippy::blocks_in_conditions)]
|
#[allow(clippy::blocks_in_conditions)]
|
||||||
async fn insert_new_collab_with_transaction(
|
async fn upsert_new_collab_with_transaction(
|
||||||
&self,
|
&self,
|
||||||
workspace_id: &str,
|
workspace_id: &str,
|
||||||
uid: &i64,
|
uid: &i64,
|
||||||
|
|
|
||||||
|
|
@ -705,7 +705,7 @@ async fn create_collab_handler(
|
||||||
let action = format!("Create new collab: {}", params);
|
let action = format!("Create new collab: {}", params);
|
||||||
state
|
state
|
||||||
.collab_access_control_storage
|
.collab_access_control_storage
|
||||||
.insert_new_collab_with_transaction(&workspace_id, &uid, params, &mut transaction, &action)
|
.upsert_new_collab_with_transaction(&workspace_id, &uid, params, &mut transaction, &action)
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
transaction
|
transaction
|
||||||
|
|
@ -911,6 +911,7 @@ async fn post_web_update_handler(
|
||||||
.await
|
.await
|
||||||
.map_err(AppResponseError::from)?;
|
.map_err(AppResponseError::from)?;
|
||||||
update_page_collab_data(
|
update_page_collab_data(
|
||||||
|
&state.pg_pool,
|
||||||
state.collab_access_control_storage.clone(),
|
state.collab_access_control_storage.clone(),
|
||||||
state.metrics.appflowy_web_metrics.clone(),
|
state.metrics.appflowy_web_metrics.clone(),
|
||||||
uid,
|
uid,
|
||||||
|
|
|
||||||
|
|
@ -130,7 +130,7 @@ pub(crate) async fn create_user_awareness(
|
||||||
.map_err(|err| AppError::Internal(anyhow::Error::from(err)))?;
|
.map_err(|err| AppError::Internal(anyhow::Error::from(err)))?;
|
||||||
|
|
||||||
storage
|
storage
|
||||||
.insert_new_collab_with_transaction(
|
.upsert_new_collab_with_transaction(
|
||||||
workspace_id,
|
workspace_id,
|
||||||
uid,
|
uid,
|
||||||
CollabParams {
|
CollabParams {
|
||||||
|
|
@ -167,7 +167,7 @@ pub(crate) async fn create_workspace_collab(
|
||||||
.map_err(|err| AppError::Internal(anyhow::Error::from(err)))?;
|
.map_err(|err| AppError::Internal(anyhow::Error::from(err)))?;
|
||||||
|
|
||||||
storage
|
storage
|
||||||
.insert_new_collab_with_transaction(
|
.upsert_new_collab_with_transaction(
|
||||||
workspace_id,
|
workspace_id,
|
||||||
&uid,
|
&uid,
|
||||||
CollabParams {
|
CollabParams {
|
||||||
|
|
@ -206,7 +206,7 @@ pub(crate) async fn create_workspace_database_collab(
|
||||||
.map_err(|err| AppError::Internal(anyhow::Error::from(err)))?;
|
.map_err(|err| AppError::Internal(anyhow::Error::from(err)))?;
|
||||||
|
|
||||||
storage
|
storage
|
||||||
.insert_new_collab_with_transaction(
|
.upsert_new_collab_with_transaction(
|
||||||
workspace_id,
|
workspace_id,
|
||||||
uid,
|
uid,
|
||||||
CollabParams {
|
CollabParams {
|
||||||
|
|
|
||||||
|
|
@ -131,7 +131,7 @@ pub async fn create_space(
|
||||||
let mut transaction = pg_pool.begin().await?;
|
let mut transaction = pg_pool.begin().await?;
|
||||||
let action = format!("Create new space: {}", view_id);
|
let action = format!("Create new space: {}", view_id);
|
||||||
collab_storage
|
collab_storage
|
||||||
.insert_new_collab_with_transaction(
|
.upsert_new_collab_with_transaction(
|
||||||
&workspace_id.to_string(),
|
&workspace_id.to_string(),
|
||||||
&uid,
|
&uid,
|
||||||
default_document_collab_params,
|
default_document_collab_params,
|
||||||
|
|
@ -652,7 +652,7 @@ async fn insert_and_broadcast_workspace_database_update(
|
||||||
};
|
};
|
||||||
let action_description = format!("Update workspace database: {}", workspace_id);
|
let action_description = format!("Update workspace database: {}", workspace_id);
|
||||||
collab_storage
|
collab_storage
|
||||||
.insert_new_collab_with_transaction(
|
.upsert_new_collab_with_transaction(
|
||||||
&workspace_id.to_string(),
|
&workspace_id.to_string(),
|
||||||
&uid,
|
&uid,
|
||||||
params,
|
params,
|
||||||
|
|
@ -684,7 +684,7 @@ async fn insert_and_broadcast_workspace_folder_update(
|
||||||
};
|
};
|
||||||
let action_description = format!("Update workspace folder: {}", workspace_id);
|
let action_description = format!("Update workspace folder: {}", workspace_id);
|
||||||
collab_storage
|
collab_storage
|
||||||
.insert_new_collab_with_transaction(
|
.upsert_new_collab_with_transaction(
|
||||||
&workspace_id.to_string(),
|
&workspace_id.to_string(),
|
||||||
&uid,
|
&uid,
|
||||||
params,
|
params,
|
||||||
|
|
@ -726,7 +726,7 @@ async fn create_document_page(
|
||||||
let mut transaction = pg_pool.begin().await?;
|
let mut transaction = pg_pool.begin().await?;
|
||||||
let action = format!("Create new collab: {}", view_id);
|
let action = format!("Create new collab: {}", view_id);
|
||||||
collab_storage
|
collab_storage
|
||||||
.insert_new_collab_with_transaction(
|
.upsert_new_collab_with_transaction(
|
||||||
&workspace_id.to_string(),
|
&workspace_id.to_string(),
|
||||||
&uid,
|
&uid,
|
||||||
default_document_collab_params,
|
default_document_collab_params,
|
||||||
|
|
@ -876,7 +876,7 @@ async fn create_database_page(
|
||||||
let mut transaction = pg_pool.begin().await?;
|
let mut transaction = pg_pool.begin().await?;
|
||||||
let action = format!("Create new database collab: {}", database_id);
|
let action = format!("Create new database collab: {}", database_id);
|
||||||
collab_storage
|
collab_storage
|
||||||
.insert_new_collab_with_transaction(
|
.upsert_new_collab_with_transaction(
|
||||||
&workspace_id.to_string(),
|
&workspace_id.to_string(),
|
||||||
&uid,
|
&uid,
|
||||||
database_collab_params,
|
database_collab_params,
|
||||||
|
|
@ -1225,7 +1225,9 @@ async fn get_page_collab_data_for_document(
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[allow(clippy::too_many_arguments)]
|
||||||
pub async fn update_page_collab_data(
|
pub async fn update_page_collab_data(
|
||||||
|
pg_pool: &PgPool,
|
||||||
collab_access_control_storage: Arc<CollabAccessControlStorage>,
|
collab_access_control_storage: Arc<CollabAccessControlStorage>,
|
||||||
appflowy_web_metrics: Arc<AppFlowyWebMetrics>,
|
appflowy_web_metrics: Arc<AppFlowyWebMetrics>,
|
||||||
uid: i64,
|
uid: i64,
|
||||||
|
|
@ -1264,9 +1266,17 @@ pub async fn update_page_collab_data(
|
||||||
encoded_collab_v1: updated_encoded_collab.into(),
|
encoded_collab_v1: updated_encoded_collab.into(),
|
||||||
embeddings: None,
|
embeddings: None,
|
||||||
};
|
};
|
||||||
|
let mut transaction = pg_pool.begin().await?;
|
||||||
collab_access_control_storage
|
collab_access_control_storage
|
||||||
.queue_insert_or_update_collab(&workspace_id.to_string(), &uid, params, true)
|
.upsert_new_collab_with_transaction(
|
||||||
|
&workspace_id.to_string(),
|
||||||
|
&uid,
|
||||||
|
params,
|
||||||
|
&mut transaction,
|
||||||
|
"upsert collab",
|
||||||
|
)
|
||||||
.await?;
|
.await?;
|
||||||
|
transaction.commit().await?;
|
||||||
broadcast_update(
|
broadcast_update(
|
||||||
&collab_access_control_storage,
|
&collab_access_control_storage,
|
||||||
&object_id.to_string(),
|
&object_id.to_string(),
|
||||||
|
|
|
||||||
|
|
@ -183,7 +183,7 @@ impl PublishCollabDuplicator {
|
||||||
};
|
};
|
||||||
let action = format!("duplicate collab: {}", params);
|
let action = format!("duplicate collab: {}", params);
|
||||||
collab_storage
|
collab_storage
|
||||||
.insert_new_collab_with_transaction(
|
.upsert_new_collab_with_transaction(
|
||||||
&dest_workspace_id,
|
&dest_workspace_id,
|
||||||
&duplicator_uid,
|
&duplicator_uid,
|
||||||
params,
|
params,
|
||||||
|
|
@ -239,7 +239,7 @@ impl PublishCollabDuplicator {
|
||||||
let updated_ws_w_db_collab = updated_ws_w_db_collab?;
|
let updated_ws_w_db_collab = updated_ws_w_db_collab?;
|
||||||
|
|
||||||
collab_storage
|
collab_storage
|
||||||
.insert_new_collab_with_transaction(
|
.upsert_new_collab_with_transaction(
|
||||||
&dest_workspace_id,
|
&dest_workspace_id,
|
||||||
&duplicator_uid,
|
&duplicator_uid,
|
||||||
CollabParams {
|
CollabParams {
|
||||||
|
|
@ -331,7 +331,7 @@ impl PublishCollabDuplicator {
|
||||||
.await?;
|
.await?;
|
||||||
|
|
||||||
collab_storage
|
collab_storage
|
||||||
.insert_new_collab_with_transaction(
|
.upsert_new_collab_with_transaction(
|
||||||
&dest_workspace_id,
|
&dest_workspace_id,
|
||||||
&duplicator_uid,
|
&duplicator_uid,
|
||||||
CollabParams {
|
CollabParams {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue