|
@@ -1,5 +1,6 @@
|
|
use crate::services::block_editor::GridBlockRevisionCompactor;
|
|
use crate::services::block_editor::GridBlockRevisionCompactor;
|
|
use crate::services::grid_editor::{GridRevisionCompactor, GridRevisionEditor};
|
|
use crate::services::grid_editor::{GridRevisionCompactor, GridRevisionEditor};
|
|
|
|
+use crate::services::grid_view_manager::make_grid_view_rev_manager;
|
|
use crate::services::persistence::block_index::BlockIndexCache;
|
|
use crate::services::persistence::block_index::BlockIndexCache;
|
|
use crate::services::persistence::kv::GridKVPersistence;
|
|
use crate::services::persistence::kv::GridKVPersistence;
|
|
use crate::services::persistence::migration::GridMigration;
|
|
use crate::services::persistence::migration::GridMigration;
|
|
@@ -9,10 +10,10 @@ use bytes::Bytes;
|
|
use dashmap::DashMap;
|
|
use dashmap::DashMap;
|
|
use flowy_database::ConnectionPool;
|
|
use flowy_database::ConnectionPool;
|
|
use flowy_error::{FlowyError, FlowyResult};
|
|
use flowy_error::{FlowyError, FlowyResult};
|
|
-use flowy_grid_data_model::revision::{BuildGridContext, GridRevision};
|
|
|
|
|
|
+use flowy_grid_data_model::revision::{BuildGridContext, GridRevision, GridViewRevision};
|
|
use flowy_revision::disk::{SQLiteGridBlockRevisionPersistence, SQLiteGridRevisionPersistence};
|
|
use flowy_revision::disk::{SQLiteGridBlockRevisionPersistence, SQLiteGridRevisionPersistence};
|
|
use flowy_revision::{RevisionManager, RevisionPersistence, RevisionWebSocket, SQLiteRevisionSnapshotPersistence};
|
|
use flowy_revision::{RevisionManager, RevisionPersistence, RevisionWebSocket, SQLiteRevisionSnapshotPersistence};
|
|
-use flowy_sync::client_grid::{make_grid_block_delta, make_grid_delta};
|
|
|
|
|
|
+use flowy_sync::client_grid::{make_grid_block_delta, make_grid_delta, make_grid_view_delta};
|
|
use flowy_sync::entities::revision::{RepeatedRevision, Revision};
|
|
use flowy_sync::entities::revision::{RepeatedRevision, Revision};
|
|
use std::sync::Arc;
|
|
use std::sync::Arc;
|
|
use tokio::sync::RwLock;
|
|
use tokio::sync::RwLock;
|
|
@@ -70,6 +71,15 @@ impl GridManager {
|
|
let db_pool = self.grid_user.db_pool()?;
|
|
let db_pool = self.grid_user.db_pool()?;
|
|
let rev_manager = self.make_grid_rev_manager(grid_id, db_pool)?;
|
|
let rev_manager = self.make_grid_rev_manager(grid_id, db_pool)?;
|
|
let _ = rev_manager.reset_object(revisions).await?;
|
|
let _ = rev_manager.reset_object(revisions).await?;
|
|
|
|
+
|
|
|
|
+ Ok(())
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ #[tracing::instrument(level = "debug", skip_all, err)]
|
|
|
|
+ async fn create_grid_view<T: AsRef<str>>(&self, view_id: T, revisions: RepeatedRevision) -> FlowyResult<()> {
|
|
|
|
+ let view_id = view_id.as_ref();
|
|
|
|
+ let rev_manager = make_grid_view_rev_manager(&self.grid_user, view_id).await?;
|
|
|
|
+ let _ = rev_manager.reset_object(revisions).await?;
|
|
Ok(())
|
|
Ok(())
|
|
}
|
|
}
|
|
|
|
|
|
@@ -198,14 +208,23 @@ pub async fn make_grid_view_data(
|
|
let _ = grid_manager.create_grid_block(&block_id, repeated_revision).await?;
|
|
let _ = grid_manager.create_grid_block(&block_id, repeated_revision).await?;
|
|
}
|
|
}
|
|
|
|
|
|
- let grid_rev = GridRevision::from_build_context(view_id, build_context);
|
|
|
|
|
|
+ let grid_id = view_id.to_owned();
|
|
|
|
+ let grid_rev = GridRevision::from_build_context(&grid_id, build_context);
|
|
|
|
|
|
// Create grid
|
|
// Create grid
|
|
- let grid_meta_delta = make_grid_delta(&grid_rev);
|
|
|
|
- let grid_delta_data = grid_meta_delta.json_bytes();
|
|
|
|
|
|
+ let grid_rev_delta = make_grid_delta(&grid_rev);
|
|
|
|
+ let grid_rev_delta_bytes = grid_rev_delta.json_bytes();
|
|
|
|
+ let repeated_revision: RepeatedRevision =
|
|
|
|
+ Revision::initial_revision(user_id, &grid_id, grid_rev_delta_bytes.clone()).into();
|
|
|
|
+ let _ = grid_manager.create_grid(&grid_id, repeated_revision).await?;
|
|
|
|
+
|
|
|
|
+ // Create grid view
|
|
|
|
+ let grid_view = GridViewRevision::new(view_id.to_owned(), view_id.to_owned());
|
|
|
|
+ let grid_view_delta = make_grid_view_delta(&grid_view);
|
|
|
|
+ let grid_view_delta_bytes = grid_view_delta.json_bytes();
|
|
let repeated_revision: RepeatedRevision =
|
|
let repeated_revision: RepeatedRevision =
|
|
- Revision::initial_revision(user_id, view_id, grid_delta_data.clone()).into();
|
|
|
|
- let _ = grid_manager.create_grid(view_id, repeated_revision).await?;
|
|
|
|
|
|
+ Revision::initial_revision(user_id, view_id, grid_view_delta_bytes).into();
|
|
|
|
+ let _ = grid_manager.create_grid_view(view_id, repeated_revision).await?;
|
|
|
|
|
|
- Ok(grid_delta_data)
|
|
|
|
|
|
+ Ok(grid_rev_delta_bytes)
|
|
}
|
|
}
|