Skip to content

Commit e9ad705

Browse files
authored
Refactor/revision compose (#1410)
1 parent b0d2cdf commit e9ad705

File tree

45 files changed

+525
-183
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+525
-183
lines changed

frontend/rust-lib/Cargo.lock

Lines changed: 0 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

frontend/rust-lib/flowy-database/src/macros.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#[rustfmt::skip]
22
/*
3-
diesel master support on_conflict on sqlite but not 1.4.7 version. Workaround for this
3+
diesel master support on_conflict on rev_sqlite but not 1.4.7 version. Workaround for this
44
55
match dsl::workspace_table
66
.filter(workspace_table::id.eq(table.id.clone()))
@@ -177,20 +177,20 @@ macro_rules! impl_rev_state_map {
177177
}
178178
}
179179

180-
impl std::convert::From<$target> for crate::disk::RevisionState {
180+
impl std::convert::From<$target> for RevisionState {
181181
fn from(s: $target) -> Self {
182182
match s {
183-
$target::Sync => crate::disk::RevisionState::Sync,
184-
$target::Ack => crate::disk::RevisionState::Ack,
183+
$target::Sync => RevisionState::Sync,
184+
$target::Ack => RevisionState::Ack,
185185
}
186186
}
187187
}
188188

189-
impl std::convert::From<crate::disk::RevisionState> for $target {
190-
fn from(s: crate::disk::RevisionState) -> Self {
189+
impl std::convert::From<RevisionState> for $target {
190+
fn from(s: RevisionState) -> Self {
191191
match s {
192-
crate::disk::RevisionState::Sync => $target::Sync,
193-
crate::disk::RevisionState::Ack => $target::Ack,
192+
RevisionState::Sync => $target::Sync,
193+
RevisionState::Ack => $target::Ack,
194194
}
195195
}
196196
}

frontend/rust-lib/flowy-document/src/editor/editor.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ use crate::editor::make_transaction_from_revisions;
44
use crate::editor::queue::{Command, CommandSender, DocumentQueue};
55
use crate::{DocumentEditor, DocumentUser};
66
use bytes::Bytes;
7+
use flowy_database::ConnectionPool;
78
use flowy_error::{internal_error, FlowyError, FlowyResult};
89
use flowy_revision::{RevisionCloudService, RevisionManager};
910
use flowy_sync::entities::ws_data::ServerRevisionWSData;
@@ -18,14 +19,14 @@ pub struct AppFlowyDocumentEditor {
1819
#[allow(dead_code)]
1920
doc_id: String,
2021
command_sender: CommandSender,
21-
rev_manager: Arc<RevisionManager>,
22+
rev_manager: Arc<RevisionManager<Arc<ConnectionPool>>>,
2223
}
2324

2425
impl AppFlowyDocumentEditor {
2526
pub async fn new(
2627
doc_id: &str,
2728
user: Arc<dyn DocumentUser>,
28-
mut rev_manager: RevisionManager,
29+
mut rev_manager: RevisionManager<Arc<ConnectionPool>>,
2930
cloud_service: Arc<dyn RevisionCloudService>,
3031
) -> FlowyResult<Arc<Self>> {
3132
let document = rev_manager.load::<DocumentRevisionSerde>(Some(cloud_service)).await?;
@@ -70,7 +71,7 @@ impl AppFlowyDocumentEditor {
7071

7172
fn spawn_edit_queue(
7273
user: Arc<dyn DocumentUser>,
73-
rev_manager: Arc<RevisionManager>,
74+
rev_manager: Arc<RevisionManager<Arc<ConnectionPool>>>,
7475
document: Document,
7576
) -> CommandSender {
7677
let (sender, receiver) = mpsc::channel(1000);

frontend/rust-lib/flowy-document/src/editor/migration/mod.rs

Lines changed: 0 additions & 3 deletions
This file was deleted.

frontend/rust-lib/flowy-document/src/editor/mod.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,11 @@
22
mod document;
33
mod document_serde;
44
mod editor;
5-
mod migration;
65
mod queue;
76

87
pub use document::*;
98
pub use document_serde::*;
109
pub use editor::*;
11-
pub use migration::*;
1210

1311
#[inline]
1412
pub fn initial_read_me() -> String {

frontend/rust-lib/flowy-document/src/editor/queue.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use flowy_sync::entities::revision::{RevId, Revision};
88
use futures::stream::StreamExt;
99
use lib_ot::core::Transaction;
1010

11+
use flowy_database::ConnectionPool;
1112
use std::sync::Arc;
1213
use tokio::sync::mpsc::{Receiver, Sender};
1314
use tokio::sync::{oneshot, RwLock};
@@ -17,14 +18,14 @@ pub struct DocumentQueue {
1718
user: Arc<dyn DocumentUser>,
1819
document: Arc<RwLock<Document>>,
1920
#[allow(dead_code)]
20-
rev_manager: Arc<RevisionManager>,
21+
rev_manager: Arc<RevisionManager<Arc<ConnectionPool>>>,
2122
receiver: Option<CommandReceiver>,
2223
}
2324

2425
impl DocumentQueue {
2526
pub fn new(
2627
user: Arc<dyn DocumentUser>,
27-
rev_manager: Arc<RevisionManager>,
28+
rev_manager: Arc<RevisionManager<Arc<ConnectionPool>>>,
2829
document: Document,
2930
receiver: CommandReceiver,
3031
) -> Self {

frontend/rust-lib/flowy-document/src/manager.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
use crate::editor::{initial_document_content, AppFlowyDocumentEditor, DocumentRevisionCompress};
22
use crate::entities::{DocumentVersionPB, EditParams};
33
use crate::old_editor::editor::{DeltaDocumentEditor, DeltaDocumentRevisionCompress};
4+
use crate::services::rev_sqlite::{SQLiteDeltaDocumentRevisionPersistence, SQLiteDocumentRevisionPersistence};
45
use crate::services::DocumentPersistence;
56
use crate::{errors::FlowyError, DocumentCloudService};
67
use bytes::Bytes;
78
use dashmap::DashMap;
89
use flowy_database::ConnectionPool;
910
use flowy_error::FlowyResult;
10-
use flowy_revision::disk::{SQLiteDeltaDocumentRevisionPersistence, SQLiteDocumentRevisionPersistence};
1111
use flowy_revision::{
1212
RevisionCloudService, RevisionManager, RevisionPersistence, RevisionWebSocket, SQLiteRevisionSnapshotPersistence,
1313
};
@@ -197,7 +197,7 @@ impl DocumentManager {
197197
/// # Arguments
198198
///
199199
/// * `doc_id`: the id of the document
200-
/// * `pool`: sqlite connection pool
200+
/// * `pool`: rev_sqlite connection pool
201201
///
202202
/// returns: Result<Arc<DocumentEditor>, FlowyError>
203203
///
@@ -231,7 +231,11 @@ impl DocumentManager {
231231
}
232232
}
233233

234-
fn make_rev_manager(&self, doc_id: &str, pool: Arc<ConnectionPool>) -> Result<RevisionManager, FlowyError> {
234+
fn make_rev_manager(
235+
&self,
236+
doc_id: &str,
237+
pool: Arc<ConnectionPool>,
238+
) -> Result<RevisionManager<Arc<ConnectionPool>>, FlowyError> {
235239
match self.config.version {
236240
DocumentVersionPB::V0 => self.make_delta_document_rev_manager(doc_id, pool),
237241
DocumentVersionPB::V1 => self.make_document_rev_manager(doc_id, pool),
@@ -242,7 +246,7 @@ impl DocumentManager {
242246
&self,
243247
doc_id: &str,
244248
pool: Arc<ConnectionPool>,
245-
) -> Result<RevisionManager, FlowyError> {
249+
) -> Result<RevisionManager<Arc<ConnectionPool>>, FlowyError> {
246250
let user_id = self.user.user_id()?;
247251
let disk_cache = SQLiteDocumentRevisionPersistence::new(&user_id, pool.clone());
248252
let rev_persistence = RevisionPersistence::new(&user_id, doc_id, disk_cache);
@@ -262,7 +266,7 @@ impl DocumentManager {
262266
&self,
263267
doc_id: &str,
264268
pool: Arc<ConnectionPool>,
265-
) -> Result<RevisionManager, FlowyError> {
269+
) -> Result<RevisionManager<Arc<ConnectionPool>>, FlowyError> {
266270
let user_id = self.user.user_id()?;
267271
let disk_cache = SQLiteDeltaDocumentRevisionPersistence::new(&user_id, pool.clone());
268272
let rev_persistence = RevisionPersistence::new(&user_id, doc_id, disk_cache);

frontend/rust-lib/flowy-document/src/old_editor/editor.rs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
use crate::old_editor::queue::{EditDocumentQueue, EditorCommand, EditorCommandSender};
44
use crate::{errors::FlowyError, DocumentEditor, DocumentUser};
55
use bytes::Bytes;
6+
use flowy_database::ConnectionPool;
67
use flowy_error::{internal_error, FlowyResult};
78
use flowy_revision::{
89
RevisionCloudService, RevisionCompress, RevisionManager, RevisionObjectDeserializer, RevisionObjectSerializer,
@@ -28,7 +29,7 @@ use tokio::sync::{mpsc, oneshot};
2829
pub struct DeltaDocumentEditor {
2930
pub doc_id: String,
3031
#[allow(dead_code)]
31-
rev_manager: Arc<RevisionManager>,
32+
rev_manager: Arc<RevisionManager<Arc<ConnectionPool>>>,
3233
#[cfg(feature = "sync")]
3334
ws_manager: Arc<flowy_revision::RevisionWebSocketManager>,
3435
edit_cmd_tx: EditorCommandSender,
@@ -39,7 +40,7 @@ impl DeltaDocumentEditor {
3940
pub(crate) async fn new(
4041
doc_id: &str,
4142
user: Arc<dyn DocumentUser>,
42-
mut rev_manager: RevisionManager,
43+
mut rev_manager: RevisionManager<Arc<ConnectionPool>>,
4344
rev_web_socket: Arc<dyn RevisionWebSocket>,
4445
cloud_service: Arc<dyn RevisionCloudService>,
4546
) -> FlowyResult<Arc<Self>> {
@@ -210,7 +211,7 @@ impl std::ops::Drop for DeltaDocumentEditor {
210211
// The edit queue will exit after the EditorCommandSender was dropped.
211212
fn spawn_edit_queue(
212213
user: Arc<dyn DocumentUser>,
213-
rev_manager: Arc<RevisionManager>,
214+
rev_manager: Arc<RevisionManager<Arc<ConnectionPool>>>,
214215
delta: DeltaTextOperations,
215216
) -> EditorCommandSender {
216217
let (sender, receiver) = mpsc::channel(1000);
@@ -238,7 +239,7 @@ impl DeltaDocumentEditor {
238239
Ok(delta)
239240
}
240241

241-
pub fn rev_manager(&self) -> Arc<RevisionManager> {
242+
pub fn rev_manager(&self) -> Arc<RevisionManager<Arc<ConnectionPool>>> {
242243
self.rev_manager.clone()
243244
}
244245
}

frontend/rust-lib/flowy-document/src/old_editor/queue.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use crate::old_editor::web_socket::DeltaDocumentResolveOperations;
22
use crate::DocumentUser;
33
use async_stream::stream;
4+
use flowy_database::ConnectionPool;
45
use flowy_error::FlowyError;
56
use flowy_revision::{OperationsMD5, RevisionManager, TransformOperations};
67
use flowy_sync::{
@@ -23,14 +24,14 @@ use tokio::sync::{oneshot, RwLock};
2324
pub(crate) struct EditDocumentQueue {
2425
document: Arc<RwLock<ClientDocument>>,
2526
user: Arc<dyn DocumentUser>,
26-
rev_manager: Arc<RevisionManager>,
27+
rev_manager: Arc<RevisionManager<Arc<ConnectionPool>>>,
2728
receiver: Option<EditorCommandReceiver>,
2829
}
2930

3031
impl EditDocumentQueue {
3132
pub(crate) fn new(
3233
user: Arc<dyn DocumentUser>,
33-
rev_manager: Arc<RevisionManager>,
34+
rev_manager: Arc<RevisionManager<Arc<ConnectionPool>>>,
3435
operations: DeltaTextOperations,
3536
receiver: EditorCommandReceiver,
3637
) -> Self {

frontend/rust-lib/flowy-document/src/old_editor/web_socket.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use crate::old_editor::queue::{EditorCommand, EditorCommandSender, TextTransformOperations};
22
use crate::TEXT_BLOCK_SYNC_INTERVAL_IN_MILLIS;
33
use bytes::Bytes;
4+
use flowy_database::ConnectionPool;
45
use flowy_error::{internal_error, FlowyError, FlowyResult};
56
use flowy_revision::*;
67
use flowy_sync::entities::revision::Revision;
@@ -41,14 +42,14 @@ impl DeltaDocumentResolveOperations {
4142
}
4243
}
4344

44-
pub type DocumentConflictController = ConflictController<DeltaDocumentResolveOperations>;
45+
pub type DocumentConflictController = ConflictController<DeltaDocumentResolveOperations, Arc<ConnectionPool>>;
4546

4647
#[allow(dead_code)]
4748
pub(crate) async fn make_document_ws_manager(
4849
doc_id: String,
4950
user_id: String,
5051
edit_cmd_tx: EditorCommandSender,
51-
rev_manager: Arc<RevisionManager>,
52+
rev_manager: Arc<RevisionManager<Arc<ConnectionPool>>>,
5253
rev_web_socket: Arc<dyn RevisionWebSocket>,
5354
) -> Arc<RevisionWebSocketManager> {
5455
let ws_data_provider = Arc::new(WSDataProvider::new(&doc_id, Arc::new(rev_manager.clone())));

0 commit comments

Comments
 (0)