From 2cf96a2ce33a49667510ae2cb75b933852b50b3d Mon Sep 17 00:00:00 2001 From: Nathan Date: Mon, 21 Apr 2025 13:07:50 +0800 Subject: [PATCH] chore: fix rust test --- .../rust-lib/flowy-document/src/manager.rs | 1 - .../flowy-user-pub/src/sql/user_sql.rs | 44 +++++++++++++++---- .../data_import/appflowy_data_import.rs | 20 ++++++--- .../flowy-user/src/user_manager/manager.rs | 6 +-- 4 files changed, 53 insertions(+), 18 deletions(-) diff --git a/frontend/rust-lib/flowy-document/src/manager.rs b/frontend/rust-lib/flowy-document/src/manager.rs index 3cf4e290fd..9c6a383bae 100644 --- a/frontend/rust-lib/flowy-document/src/manager.rs +++ b/frontend/rust-lib/flowy-document/src/manager.rs @@ -159,7 +159,6 @@ impl DocumentManager { format!("document {} already exists", doc_id), )) } else { - info!("create document {}", doc_id); let encoded_collab = doc_state_from_document_data(doc_id, data).await?; self .persistence()? diff --git a/frontend/rust-lib/flowy-user-pub/src/sql/user_sql.rs b/frontend/rust-lib/flowy-user-pub/src/sql/user_sql.rs index 16db46125f..384b66d51b 100644 --- a/frontend/rust-lib/flowy-user-pub/src/sql/user_sql.rs +++ b/frontend/rust-lib/flowy-user-pub/src/sql/user_sql.rs @@ -4,7 +4,7 @@ use crate::sql::select_user_workspace; use flowy_error::{FlowyError, FlowyResult}; use flowy_sqlite::schema::user_table; use flowy_sqlite::{prelude::*, DBConnection, ExpressionMethods, RunQueryDsl}; -use tracing::trace; +use tracing::{trace, warn}; /// The order of the fields in the struct must be the same as the order of the fields in the table. /// Check out the [schema.rs] for table schema. @@ -92,14 +92,7 @@ pub fn update_user_profile( Ok(()) } -pub fn select_user_profile( - uid: i64, - workspace_id: &str, - conn: &mut SqliteConnection, -) -> Result { - let workspace = select_user_workspace(workspace_id, conn)?; - let workspace_auth_type = AuthType::from(workspace.workspace_type); - +fn select_user_table_row(uid: i64, conn: &mut SqliteConnection) -> Result { let row = user_table::dsl::user_table .filter(user_table::id.eq(&uid.to_string())) .first::(conn) @@ -109,6 +102,17 @@ pub fn select_user_profile( uid, err )) })?; + Ok(row) +} + +pub fn select_user_profile( + uid: i64, + workspace_id: &str, + conn: &mut SqliteConnection, +) -> Result { + let workspace = select_user_workspace(workspace_id, conn)?; + let workspace_auth_type = AuthType::from(workspace.workspace_type); + let row = select_user_table_row(uid, conn)?; let user = UserProfile { uid: row.id.parse::().unwrap_or(0), @@ -124,6 +128,28 @@ pub fn select_user_profile( Ok(user) } +pub fn select_workspace_auth_type( + uid: i64, + workspace_id: &str, + conn: &mut SqliteConnection, +) -> Result { + match select_user_workspace(workspace_id, conn) { + Ok(workspace) => Ok(AuthType::from(workspace.workspace_type)), + Err(err) => { + if err.is_record_not_found() { + let row = select_user_table_row(uid, conn)?; + warn!( + "user user auth type:{} as workspace auth type", + row.auth_type + ); + Ok(AuthType::from(row.auth_type)) + } else { + Err(err) + } + }, + } +} + pub fn upsert_user(user: UserTable, mut conn: DBConnection) -> FlowyResult<()> { conn.immediate_transaction(|conn| { // delete old user if exists diff --git a/frontend/rust-lib/flowy-user/src/services/data_import/appflowy_data_import.rs b/frontend/rust-lib/flowy-user/src/services/data_import/appflowy_data_import.rs index 316311b6e2..20b0c26368 100644 --- a/frontend/rust-lib/flowy-user/src/services/data_import/appflowy_data_import.rs +++ b/frontend/rust-lib/flowy-user/src/services/data_import/appflowy_data_import.rs @@ -36,7 +36,7 @@ use std::collections::{HashMap, HashSet}; use collab_document::blocks::TextDelta; use collab_document::document::Document; -use flowy_user_pub::sql::select_user_profile; +use flowy_user_pub::sql::{select_user_profile, select_workspace_auth_type}; use semver::Version; use serde_json::json; use std::ops::{Deref, DerefMut}; @@ -101,15 +101,25 @@ pub(crate) fn prepare_import( CollabKVDB::open(collab_db_path) .map_err(|err| anyhow!("[AppflowyData]: open import collab db failed: {:?}", err))?, ); - let imported_user = select_user_profile( + + let mut conn = imported_sqlite_db.get_connection()?; + let imported_workspace_auth_type = select_user_profile( imported_session.user_id, &imported_session.user_workspace.id, - &mut *imported_sqlite_db.get_connection()?, - )?; + &mut conn, + ) + .map(|v| v.workspace_auth_type) + .or_else(|_| { + select_workspace_auth_type( + imported_session.user_id, + &imported_session.user_workspace.id, + &mut conn, + ) + })?; run_collab_data_migration( &imported_session, - &imported_user, + &imported_workspace_auth_type, imported_collab_db.clone(), imported_sqlite_db.get_pool(), other_store_preferences.clone(), diff --git a/frontend/rust-lib/flowy-user/src/user_manager/manager.rs b/frontend/rust-lib/flowy-user/src/user_manager/manager.rs index b3691a331e..b9af5c330d 100644 --- a/frontend/rust-lib/flowy-user/src/user_manager/manager.rs +++ b/frontend/rust-lib/flowy-user/src/user_manager/manager.rs @@ -253,7 +253,7 @@ impl UserManager { (Ok(collab_db), Ok(sqlite_pool)) => { run_collab_data_migration( &session, - &user, + &user.auth_type, collab_db, sqlite_pool, self.store_preferences.clone(), @@ -869,7 +869,7 @@ fn mark_all_migrations_as_applied(sqlite_pool: &Arc) { pub(crate) fn run_collab_data_migration( session: &Session, - user: &UserProfile, + auth_type: &AuthType, collab_db: Arc, sqlite_pool: Arc, kv: Arc, @@ -878,7 +878,7 @@ pub(crate) fn run_collab_data_migration( let migrations = collab_migration_list(); match UserLocalDataMigration::new(session.clone(), collab_db, sqlite_pool, kv).run( migrations, - &user.auth_type, + auth_type, app_version, ) { Ok(applied_migrations) => {