diff --git a/frontend/rust-lib/Cargo.lock b/frontend/rust-lib/Cargo.lock
index fba225a3a3..7534492ab0 100644
--- a/frontend/rust-lib/Cargo.lock
+++ b/frontend/rust-lib/Cargo.lock
@@ -1039,6 +1039,7 @@ dependencies = [
"lib-ot",
"lib-ws",
"serde",
+ "serde_json",
"strum",
"strum_macros",
"tokio",
diff --git a/frontend/rust-lib/flowy-folder/src/services/persistence/migration.rs b/frontend/rust-lib/flowy-folder/src/services/persistence/migration.rs
index d67d062d25..7b211fb54a 100644
--- a/frontend/rust-lib/flowy-folder/src/services/persistence/migration.rs
+++ b/frontend/rust-lib/flowy-folder/src/services/persistence/migration.rs
@@ -5,15 +5,18 @@ use crate::{
};
use flowy_database::kv::KV;
use flowy_error::{FlowyError, FlowyResult};
-
-use flowy_folder_data_model::revision::{AppRevision, ViewRevision, WorkspaceRevision};
+use flowy_folder_data_model::revision::{AppRevision, FolderRevision, ViewRevision, WorkspaceRevision};
use flowy_revision::disk::SQLiteTextBlockRevisionPersistence;
-use flowy_revision::{RevisionLoader, RevisionPersistence};
+use flowy_revision::reset::{RevisionResettable, RevisionStructReset};
+use flowy_sync::client_folder::make_folder_rev_json_str;
+use flowy_sync::entities::revision::Revision;
use flowy_sync::{client_folder::FolderPad, entities::revision::md5};
use std::sync::Arc;
const V1_MIGRATION: &str = "FOLDER_V1_MIGRATION";
const V2_MIGRATION: &str = "FOLDER_V2_MIGRATION";
+#[allow(dead_code)]
+const V3_MIGRATION: &str = "FOLDER_V3_MIGRATION";
pub(crate) struct FolderMigration {
user_id: String,
@@ -29,7 +32,7 @@ impl FolderMigration {
}
pub fn run_v1_migration(&self) -> FlowyResult