Skip to content

Commit 3491ffd

Browse files
authored
Fix/read app (#1808)
* fix: filter out the apps that are deleted * chore: format code style * chore: fix clippy wanrings
1 parent 1df2619 commit 3491ffd

File tree

15 files changed

+114
-111
lines changed

15 files changed

+114
-111
lines changed

frontend/.vscode/launch.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212
"type": "dart",
1313
"preLaunchTask": "AF: Build Appflowy Core",
1414
"env": {
15-
// "RUST_LOG": "trace"
16-
"RUST_LOG": "debug"
15+
"RUST_LOG": "trace"
16+
// "RUST_LOG": "debug"
1717
},
1818
"cwd": "${workspaceRoot}/app_flowy"
1919
},

frontend/rust-lib/flowy-database/src/services/persistence/rev_sqlite/grid_snapshot.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#![allow(clippy::unused_unit)]
22
use bytes::Bytes;
33
use flowy_error::{internal_error, FlowyResult};
4-
use flowy_revision::{RevisionSnapshot, RevisionSnapshotDiskCache};
4+
use flowy_revision::{RevisionSnapshotData, RevisionSnapshotPersistence};
55
use flowy_sqlite::{
66
prelude::*,
77
schema::{grid_rev_snapshot, grid_rev_snapshot::dsl},
@@ -28,7 +28,7 @@ impl SQLiteDatabaseRevisionSnapshotPersistence {
2828
}
2929
}
3030

31-
impl RevisionSnapshotDiskCache for SQLiteDatabaseRevisionSnapshotPersistence {
31+
impl RevisionSnapshotPersistence for SQLiteDatabaseRevisionSnapshotPersistence {
3232
fn write_snapshot(&self, rev_id: i64, data: Vec<u8>) -> FlowyResult<()> {
3333
let conn = self.pool.get().map_err(internal_error)?;
3434
let snapshot_id = self.gen_snapshot_id(rev_id);
@@ -72,7 +72,7 @@ impl RevisionSnapshotDiskCache for SQLiteDatabaseRevisionSnapshotPersistence {
7272
// })
7373
}
7474

75-
fn read_snapshot(&self, rev_id: i64) -> FlowyResult<Option<RevisionSnapshot>> {
75+
fn read_snapshot(&self, rev_id: i64) -> FlowyResult<Option<RevisionSnapshotData>> {
7676
let conn = self.pool.get().map_err(internal_error)?;
7777
let snapshot_id = self.gen_snapshot_id(rev_id);
7878
let record = dsl::grid_rev_snapshot
@@ -82,7 +82,7 @@ impl RevisionSnapshotDiskCache for SQLiteDatabaseRevisionSnapshotPersistence {
8282
Ok(Some(record.into()))
8383
}
8484

85-
fn read_last_snapshot(&self) -> FlowyResult<Option<RevisionSnapshot>> {
85+
fn read_last_snapshot(&self) -> FlowyResult<Option<RevisionSnapshotData>> {
8686
let conn = self.pool.get().map_err(internal_error)?;
8787
let latest_record = dsl::grid_rev_snapshot
8888
.filter(dsl::object_id.eq(&self.object_id))
@@ -106,9 +106,9 @@ struct GridSnapshotRecord {
106106
data: Vec<u8>,
107107
}
108108

109-
impl std::convert::From<GridSnapshotRecord> for RevisionSnapshot {
109+
impl std::convert::From<GridSnapshotRecord> for RevisionSnapshotData {
110110
fn from(record: GridSnapshotRecord) -> Self {
111-
RevisionSnapshot {
111+
RevisionSnapshotData {
112112
rev_id: record.rev_id,
113113
base_rev_id: record.base_rev_id,
114114
timestamp: record.timestamp,

frontend/rust-lib/flowy-database/tests/grid/snapshot_test/script.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use crate::grid::database_editor::DatabaseEditorTest;
22

33
use flowy_client_sync::client_database::{DatabaseOperations, DatabaseRevisionPad};
4-
use flowy_revision::{RevisionSnapshot, REVISION_WRITE_INTERVAL_IN_MILLIS};
4+
use flowy_revision::{RevisionSnapshotData, REVISION_WRITE_INTERVAL_IN_MILLIS};
55
use grid_model::FieldRevision;
66
use revision_model::Revision;
77
use std::time::Duration;
@@ -12,10 +12,10 @@ pub enum SnapshotScript {
1212
#[allow(dead_code)]
1313
AssertSnapshot {
1414
rev_id: i64,
15-
expected: Option<RevisionSnapshot>,
15+
expected: Option<RevisionSnapshotData>,
1616
},
1717
AssertSnapshotContent {
18-
snapshot: RevisionSnapshot,
18+
snapshot: RevisionSnapshotData,
1919
expected: String,
2020
},
2121
CreateField {
@@ -28,7 +28,7 @@ pub enum SnapshotScript {
2828

2929
pub struct DatabaseSnapshotTest {
3030
inner: DatabaseEditorTest,
31-
pub current_snapshot: Option<RevisionSnapshot>,
31+
pub current_snapshot: Option<RevisionSnapshotData>,
3232
pub current_revision: Option<Revision>,
3333
}
3434

@@ -56,7 +56,7 @@ impl DatabaseSnapshotTest {
5656
}
5757
}
5858

59-
pub async fn get_latest_snapshot(&self) -> Option<RevisionSnapshot> {
59+
pub async fn get_latest_snapshot(&self) -> Option<RevisionSnapshotData> {
6060
self.editor.rev_manager().read_snapshot(None).await.unwrap()
6161
}
6262

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use crate::editor::{initial_document_content, AppFlowyDocumentEditor, DocumentRevisionMergeable};
22
use crate::entities::{DocumentVersionPB, EditParams};
33
use crate::old_editor::editor::{DeltaDocumentEditor, DeltaDocumentRevisionMergeable};
4+
use crate::old_editor::snapshot::DeltaDocumentSnapshotPersistence;
45
use crate::services::rev_sqlite::{
56
SQLiteDeltaDocumentRevisionPersistence, SQLiteDocumentRevisionPersistence,
67
SQLiteDocumentRevisionSnapshotPersistence,
@@ -12,8 +13,7 @@ use document_model::document::DocumentId;
1213
use flowy_client_sync::client_document::initial_delta_document_content;
1314
use flowy_error::FlowyResult;
1415
use flowy_revision::{
15-
PhantomSnapshotPersistence, RevisionCloudService, RevisionManager, RevisionPersistence,
16-
RevisionPersistenceConfiguration, RevisionWebSocket,
16+
RevisionCloudService, RevisionManager, RevisionPersistence, RevisionPersistenceConfiguration, RevisionWebSocket,
1717
};
1818
use flowy_sqlite::ConnectionPool;
1919
use lib_infra::async_trait::async_trait;
@@ -292,7 +292,7 @@ impl DocumentManager {
292292
doc_id,
293293
rev_persistence,
294294
DeltaDocumentRevisionMergeable(),
295-
PhantomSnapshotPersistence(),
295+
DeltaDocumentSnapshotPersistence(),
296296
))
297297
}
298298
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
pub mod conflict;
22
pub mod editor;
33
pub mod queue;
4+
pub mod snapshot;
45
mod web_socket;
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
use flowy_error::FlowyResult;
2+
use flowy_revision::{RevisionSnapshotData, RevisionSnapshotPersistence};
3+
4+
pub struct DeltaDocumentSnapshotPersistence();
5+
6+
impl RevisionSnapshotPersistence for DeltaDocumentSnapshotPersistence {
7+
fn write_snapshot(&self, _rev_id: i64, _data: Vec<u8>) -> FlowyResult<()> {
8+
Ok(())
9+
}
10+
11+
fn read_snapshot(&self, _rev_id: i64) -> FlowyResult<Option<RevisionSnapshotData>> {
12+
Ok(None)
13+
}
14+
15+
fn read_last_snapshot(&self) -> FlowyResult<Option<RevisionSnapshotData>> {
16+
Ok(None)
17+
}
18+
}

frontend/rust-lib/flowy-document/src/services/persistence/rev_sqlite/document_snapshot.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use bytes::Bytes;
22
use flowy_error::{internal_error, FlowyResult};
3-
use flowy_revision::{RevisionSnapshot, RevisionSnapshotDiskCache};
3+
use flowy_revision::{RevisionSnapshotData, RevisionSnapshotPersistence};
44
use flowy_sqlite::{
55
prelude::*,
66
schema::{document_rev_snapshot, document_rev_snapshot::dsl},
@@ -27,7 +27,7 @@ impl SQLiteDocumentRevisionSnapshotPersistence {
2727
}
2828
}
2929

30-
impl RevisionSnapshotDiskCache for SQLiteDocumentRevisionSnapshotPersistence {
30+
impl RevisionSnapshotPersistence for SQLiteDocumentRevisionSnapshotPersistence {
3131
fn should_generate_snapshot_from_range(&self, start_rev_id: i64, current_rev_id: i64) -> bool {
3232
(current_rev_id - start_rev_id) >= 150
3333
}
@@ -50,7 +50,7 @@ impl RevisionSnapshotDiskCache for SQLiteDocumentRevisionSnapshotPersistence {
5050
Ok(())
5151
}
5252

53-
fn read_snapshot(&self, rev_id: i64) -> FlowyResult<Option<RevisionSnapshot>> {
53+
fn read_snapshot(&self, rev_id: i64) -> FlowyResult<Option<RevisionSnapshotData>> {
5454
let conn = self.pool.get().map_err(internal_error)?;
5555
let snapshot_id = self.gen_snapshot_id(rev_id);
5656
let record = dsl::document_rev_snapshot
@@ -60,7 +60,7 @@ impl RevisionSnapshotDiskCache for SQLiteDocumentRevisionSnapshotPersistence {
6060
Ok(Some(record.into()))
6161
}
6262

63-
fn read_last_snapshot(&self) -> FlowyResult<Option<RevisionSnapshot>> {
63+
fn read_last_snapshot(&self) -> FlowyResult<Option<RevisionSnapshotData>> {
6464
let conn = self.pool.get().map_err(internal_error)?;
6565
let latest_record = dsl::document_rev_snapshot
6666
.filter(dsl::object_id.eq(&self.object_id))
@@ -84,9 +84,9 @@ struct DocumentSnapshotRecord {
8484
data: Vec<u8>,
8585
}
8686

87-
impl std::convert::From<DocumentSnapshotRecord> for RevisionSnapshot {
87+
impl std::convert::From<DocumentSnapshotRecord> for RevisionSnapshotData {
8888
fn from(record: DocumentSnapshotRecord) -> Self {
89-
RevisionSnapshot {
89+
RevisionSnapshotData {
9090
rev_id: record.rev_id,
9191
base_rev_id: record.base_rev_id,
9292
timestamp: record.timestamp,

frontend/rust-lib/flowy-folder/src/services/app/controller.rs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,18 +60,16 @@ impl AppController {
6060
Ok(app.into())
6161
}
6262

63-
pub(crate) async fn read_app(&self, params: AppIdPB) -> Result<AppRevision, FlowyError> {
63+
pub(crate) async fn read_app(&self, params: AppIdPB) -> Result<Option<AppRevision>, FlowyError> {
6464
let app = self
6565
.persistence
6666
.begin_transaction(|transaction| {
6767
let app = transaction.read_app(&params.value)?;
6868
let trash_ids = self.trash_controller.read_trash_ids(&transaction)?;
6969
if trash_ids.contains(&app.id) {
70-
return Err(
71-
FlowyError::record_not_found().context(format!("Can not find the app:{}", params.value))
72-
);
70+
return Ok(None);
7371
}
74-
Ok(app)
72+
Ok(Some(app))
7573
})
7674
.await?;
7775
self.read_app_on_server(params)?;
@@ -243,7 +241,7 @@ fn notify_apps_changed<'a>(
243241
trash_controller: Arc<TrashController>,
244242
transaction: &'a (dyn FolderPersistenceTransaction + 'a),
245243
) -> FlowyResult<()> {
246-
let items = read_local_workspace_apps(workspace_id, trash_controller, transaction)?
244+
let items = read_workspace_apps(workspace_id, trash_controller, transaction)?
247245
.into_iter()
248246
.map(|app_rev| app_rev.into())
249247
.collect();
@@ -254,7 +252,7 @@ fn notify_apps_changed<'a>(
254252
Ok(())
255253
}
256254

257-
pub fn read_local_workspace_apps<'a>(
255+
pub fn read_workspace_apps<'a>(
258256
workspace_id: &str,
259257
trash_controller: Arc<TrashController>,
260258
transaction: &'a (dyn FolderPersistenceTransaction + 'a),

frontend/rust-lib/flowy-folder/src/services/app/event_handler.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,10 @@ pub(crate) async fn read_app_handler(
5151
view_controller: AFPluginState<Arc<ViewController>>,
5252
) -> DataResult<AppPB, FlowyError> {
5353
let params: AppIdPB = data.into_inner();
54-
let mut app_rev = app_controller.read_app(params.clone()).await?;
55-
app_rev.belongings = view_controller.read_views_belong_to(&params.value).await?;
56-
57-
data_result(app_rev.into())
54+
if let Some(mut app_rev) = app_controller.read_app(params.clone()).await? {
55+
app_rev.belongings = view_controller.read_views_belong_to(&params.value).await?;
56+
data_result(app_rev.into())
57+
} else {
58+
Err(FlowyError::record_not_found())
59+
}
5860
}

frontend/rust-lib/flowy-folder/src/services/persistence/rev_sqlite/folder_snapshot.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#![allow(clippy::unused_unit)]
22
use bytes::Bytes;
33
use flowy_error::{internal_error, FlowyResult};
4-
use flowy_revision::{RevisionSnapshot, RevisionSnapshotDiskCache};
4+
use flowy_revision::{RevisionSnapshotData, RevisionSnapshotPersistence};
55
use flowy_sqlite::{
66
prelude::*,
77
schema::{folder_rev_snapshot, folder_rev_snapshot::dsl},
@@ -28,7 +28,7 @@ impl SQLiteFolderRevisionSnapshotPersistence {
2828
}
2929
}
3030

31-
impl RevisionSnapshotDiskCache for SQLiteFolderRevisionSnapshotPersistence {
31+
impl RevisionSnapshotPersistence for SQLiteFolderRevisionSnapshotPersistence {
3232
fn should_generate_snapshot_from_range(&self, start_rev_id: i64, current_rev_id: i64) -> bool {
3333
(current_rev_id - start_rev_id) >= 2
3434
}
@@ -51,7 +51,7 @@ impl RevisionSnapshotDiskCache for SQLiteFolderRevisionSnapshotPersistence {
5151
Ok(())
5252
}
5353

54-
fn read_snapshot(&self, rev_id: i64) -> FlowyResult<Option<RevisionSnapshot>> {
54+
fn read_snapshot(&self, rev_id: i64) -> FlowyResult<Option<RevisionSnapshotData>> {
5555
let conn = self.pool.get().map_err(internal_error)?;
5656
let snapshot_id = self.gen_snapshot_id(rev_id);
5757
let record = dsl::folder_rev_snapshot
@@ -61,7 +61,7 @@ impl RevisionSnapshotDiskCache for SQLiteFolderRevisionSnapshotPersistence {
6161
Ok(Some(record.into()))
6262
}
6363

64-
fn read_last_snapshot(&self) -> FlowyResult<Option<RevisionSnapshot>> {
64+
fn read_last_snapshot(&self) -> FlowyResult<Option<RevisionSnapshotData>> {
6565
let conn = self.pool.get().map_err(internal_error)?;
6666
let latest_record = dsl::folder_rev_snapshot
6767
.filter(dsl::object_id.eq(&self.object_id))
@@ -85,9 +85,9 @@ struct FolderSnapshotRecord {
8585
data: Vec<u8>,
8686
}
8787

88-
impl std::convert::From<FolderSnapshotRecord> for RevisionSnapshot {
88+
impl std::convert::From<FolderSnapshotRecord> for RevisionSnapshotData {
8989
fn from(record: FolderSnapshotRecord) -> Self {
90-
RevisionSnapshot {
90+
RevisionSnapshotData {
9191
rev_id: record.rev_id,
9292
base_rev_id: record.base_rev_id,
9393
timestamp: record.timestamp,

0 commit comments

Comments
 (0)