mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2024-08-30 18:12:39 +00:00
Feat/http server adapt (#1754)
This commit is contained in:
@ -6,16 +6,17 @@ edition = "2018"
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
folder-rev-model = { path = "../../../shared-lib/folder-rev-model" }
|
||||
flowy-sync = { path = "../flowy-sync"}
|
||||
flowy-http-model = { path = "../../../shared-lib/flowy-http-model" }
|
||||
folder-model = { path = "../../../shared-lib/folder-model" }
|
||||
flowy-client-sync = { path = "../flowy-client-sync"}
|
||||
revision-model = { path = "../../../shared-lib/revision-model" }
|
||||
ws-model = { path = "../../../shared-lib/ws-model" }
|
||||
flowy-derive = { path = "../flowy-derive" }
|
||||
lib-ot = { path = "../../../shared-lib/lib-ot" }
|
||||
lib-infra = { path = "../../../shared-lib/lib-infra" }
|
||||
|
||||
flowy-document = { path = "../flowy-document" }
|
||||
flowy-database = { path = "../flowy-database", optional = true }
|
||||
flowy-error = { path = "../flowy-error", features = ["db", "http_server"]}
|
||||
flowy-error = { path = "../flowy-error", features = ["adaptor_database", "adaptor_dispatch"]}
|
||||
flowy-notification = { path = "../flowy-notification" }
|
||||
lib-dispatch = { path = "../lib-dispatch" }
|
||||
flowy-revision = { path = "../flowy-revision" }
|
||||
|
@ -8,7 +8,7 @@ use crate::{
|
||||
impl_def_and_def_mut,
|
||||
};
|
||||
use flowy_derive::ProtoBuf;
|
||||
use folder_rev_model::AppRevision;
|
||||
use folder_model::AppRevision;
|
||||
use std::convert::TryInto;
|
||||
|
||||
#[derive(Eq, PartialEq, ProtoBuf, Debug, Default, Clone)]
|
||||
|
@ -1,6 +1,6 @@
|
||||
use crate::impl_def_and_def_mut;
|
||||
use flowy_derive::{ProtoBuf, ProtoBuf_Enum};
|
||||
use folder_rev_model::{TrashRevision, TrashTypeRevision};
|
||||
use folder_model::{TrashRevision, TrashTypeRevision};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::fmt::Formatter;
|
||||
|
||||
|
@ -7,7 +7,7 @@ use crate::{
|
||||
impl_def_and_def_mut,
|
||||
};
|
||||
use flowy_derive::{ProtoBuf, ProtoBuf_Enum};
|
||||
use folder_rev_model::{gen_view_id, ViewDataFormatRevision, ViewLayoutTypeRevision, ViewRevision};
|
||||
use folder_model::{gen_view_id, ViewDataFormatRevision, ViewLayoutTypeRevision, ViewRevision};
|
||||
use std::convert::TryInto;
|
||||
|
||||
#[derive(Eq, PartialEq, ProtoBuf, Debug, Default, Clone)]
|
||||
|
@ -5,7 +5,7 @@ use crate::{
|
||||
impl_def_and_def_mut,
|
||||
};
|
||||
use flowy_derive::ProtoBuf;
|
||||
use folder_rev_model::WorkspaceRevision;
|
||||
use folder_model::WorkspaceRevision;
|
||||
use std::convert::TryInto;
|
||||
|
||||
#[derive(Eq, PartialEq, ProtoBuf, Default, Debug, Clone)]
|
||||
|
@ -11,7 +11,7 @@ use crate::{
|
||||
};
|
||||
use flowy_database::{ConnectionPool, DBConnection};
|
||||
use flowy_derive::{Flowy_Event, ProtoBuf_Enum};
|
||||
use folder_rev_model::{AppRevision, TrashRevision, ViewRevision, WorkspaceRevision};
|
||||
use folder_model::{AppRevision, TrashRevision, ViewRevision, WorkspaceRevision};
|
||||
use lib_dispatch::prelude::*;
|
||||
use lib_infra::future::FutureResult;
|
||||
use std::sync::Arc;
|
||||
|
@ -15,7 +15,7 @@ use bytes::Bytes;
|
||||
use flowy_document::editor::initial_read_me;
|
||||
use flowy_error::FlowyError;
|
||||
use flowy_revision::{RevisionManager, RevisionPersistence, RevisionPersistenceConfiguration, RevisionWebSocket};
|
||||
use folder_rev_model::user_default;
|
||||
use folder_model::user_default;
|
||||
use lazy_static::lazy_static;
|
||||
use lib_infra::future::FutureResult;
|
||||
|
||||
@ -23,11 +23,11 @@ use crate::services::clear_current_workspace;
|
||||
use crate::services::persistence::rev_sqlite::{
|
||||
SQLiteFolderRevisionPersistence, SQLiteFolderRevisionSnapshotPersistence,
|
||||
};
|
||||
use flowy_http_model::ws_data::ServerRevisionWSData;
|
||||
use flowy_sync::client_folder::FolderPad;
|
||||
use flowy_client_sync::client_folder::FolderPad;
|
||||
use std::convert::TryFrom;
|
||||
use std::{collections::HashMap, fmt::Formatter, sync::Arc};
|
||||
use tokio::sync::RwLock as TokioRwLock;
|
||||
use ws_model::ws_revision::ServerRevisionWSData;
|
||||
lazy_static! {
|
||||
static ref INIT_FOLDER_FLAG: TokioRwLock<HashMap<String, bool>> = TokioRwLock::new(HashMap::new());
|
||||
}
|
||||
|
@ -12,7 +12,7 @@ use crate::{
|
||||
},
|
||||
};
|
||||
|
||||
use folder_rev_model::AppRevision;
|
||||
use folder_model::AppRevision;
|
||||
use futures::{FutureExt, StreamExt};
|
||||
use std::{collections::HashSet, sync::Arc};
|
||||
|
||||
|
@ -3,7 +3,7 @@ use crate::{
|
||||
errors::FlowyError,
|
||||
services::{AppController, TrashController, ViewController},
|
||||
};
|
||||
use folder_rev_model::TrashRevision;
|
||||
use folder_model::TrashRevision;
|
||||
use lib_dispatch::prelude::{data_result, AFPluginData, AFPluginState, DataResult};
|
||||
use std::{convert::TryInto, sync::Arc};
|
||||
|
||||
|
@ -1,20 +1,20 @@
|
||||
use crate::manager::FolderId;
|
||||
use bytes::Bytes;
|
||||
use flowy_client_sync::client_folder::{FolderChangeset, FolderOperations, FolderPad};
|
||||
use flowy_client_sync::make_operations_from_revisions;
|
||||
use flowy_client_sync::util::recover_operation_from_revisions;
|
||||
use flowy_database::ConnectionPool;
|
||||
use flowy_error::{FlowyError, FlowyResult};
|
||||
use flowy_http_model::revision::Revision;
|
||||
use flowy_http_model::ws_data::ServerRevisionWSData;
|
||||
use flowy_revision::{
|
||||
RevisionCloudService, RevisionManager, RevisionMergeable, RevisionObjectDeserializer, RevisionObjectSerializer,
|
||||
RevisionWebSocket,
|
||||
};
|
||||
use flowy_sync::client_folder::{FolderChangeset, FolderPad};
|
||||
use flowy_sync::server_folder::FolderOperations;
|
||||
use flowy_sync::util::{make_operations_from_revisions, recover_operation_from_revisions};
|
||||
use lib_infra::future::FutureResult;
|
||||
use lib_ot::core::EmptyAttributes;
|
||||
use parking_lot::RwLock;
|
||||
use revision_model::Revision;
|
||||
use std::sync::Arc;
|
||||
use ws_model::ws_revision::ServerRevisionWSData;
|
||||
|
||||
pub struct FolderEditor {
|
||||
#[allow(dead_code)]
|
||||
|
@ -4,17 +4,16 @@ use crate::{
|
||||
services::persistence::{AppTableSql, TrashTableSql, ViewTableSql, WorkspaceTableSql},
|
||||
};
|
||||
use bytes::Bytes;
|
||||
use flowy_client_sync::client_folder::FolderPad;
|
||||
use flowy_client_sync::client_folder::{make_folder_rev_json_str, FolderOperationsBuilder};
|
||||
use flowy_database::kv::KV;
|
||||
use flowy_error::{FlowyError, FlowyResult};
|
||||
use flowy_http_model::revision::Revision;
|
||||
use flowy_revision::reset::{RevisionResettable, RevisionStructReset};
|
||||
use flowy_sync::client_folder::make_folder_rev_json_str;
|
||||
use flowy_sync::client_folder::FolderPad;
|
||||
use flowy_sync::server_folder::FolderOperationsBuilder;
|
||||
use folder_rev_model::{AppRevision, FolderRevision, ViewRevision, WorkspaceRevision};
|
||||
use folder_model::{AppRevision, FolderRevision, ViewRevision, WorkspaceRevision};
|
||||
use revision_model::Revision;
|
||||
|
||||
use crate::services::persistence::rev_sqlite::SQLiteFolderRevisionPersistence;
|
||||
use flowy_http_model::util::md5;
|
||||
use lib_infra::util::md5;
|
||||
use std::sync::Arc;
|
||||
|
||||
const V1_MIGRATION: &str = "FOLDER_V1_MIGRATION";
|
||||
|
@ -9,13 +9,12 @@ use crate::{
|
||||
manager::FolderId,
|
||||
services::{folder_editor::FolderEditor, persistence::migration::FolderMigration},
|
||||
};
|
||||
use flowy_client_sync::client_folder::{FolderOperationsBuilder, FolderPad};
|
||||
use flowy_database::ConnectionPool;
|
||||
use flowy_error::{FlowyError, FlowyResult};
|
||||
use flowy_http_model::revision::Revision;
|
||||
use flowy_revision_persistence::{RevisionDiskCache, RevisionState, SyncRecord};
|
||||
use flowy_sync::client_folder::FolderPad;
|
||||
use flowy_sync::server_folder::FolderOperationsBuilder;
|
||||
use folder_rev_model::{AppRevision, TrashRevision, ViewRevision, WorkspaceRevision};
|
||||
use folder_model::{AppRevision, TrashRevision, ViewRevision, WorkspaceRevision};
|
||||
use revision_model::Revision;
|
||||
use std::sync::Arc;
|
||||
use tokio::sync::RwLock;
|
||||
pub use version_1::{app_sql::*, trash_sql::*, v1_impl::V1Transaction, view_sql::*, workspace_sql::*};
|
||||
|
@ -7,9 +7,9 @@ use flowy_database::{
|
||||
ConnectionPool,
|
||||
};
|
||||
use flowy_error::{internal_error, FlowyError, FlowyResult};
|
||||
use flowy_http_model::revision::{Revision, RevisionRange};
|
||||
use flowy_http_model::util::md5;
|
||||
use flowy_revision_persistence::{RevisionChangeset, RevisionDiskCache, RevisionState, SyncRecord};
|
||||
use lib_infra::util::md5;
|
||||
use revision_model::{Revision, RevisionRange};
|
||||
use std::sync::Arc;
|
||||
|
||||
pub struct SQLiteFolderRevisionPersistence {
|
||||
|
@ -8,7 +8,7 @@ use flowy_database::{
|
||||
schema::{app_table, app_table::dsl},
|
||||
SqliteConnection,
|
||||
};
|
||||
use folder_rev_model::AppRevision;
|
||||
use folder_model::AppRevision;
|
||||
|
||||
pub struct AppTableSql();
|
||||
impl AppTableSql {
|
||||
|
@ -5,7 +5,7 @@ use flowy_database::{
|
||||
schema::{trash_table, trash_table::dsl},
|
||||
SqliteConnection,
|
||||
};
|
||||
use folder_rev_model::{TrashRevision, TrashTypeRevision};
|
||||
use folder_model::{TrashRevision, TrashTypeRevision};
|
||||
|
||||
pub struct TrashTableSql();
|
||||
impl TrashTableSql {
|
||||
|
@ -8,7 +8,7 @@ use crate::services::persistence::{
|
||||
};
|
||||
use flowy_database::DBConnection;
|
||||
use flowy_error::FlowyResult;
|
||||
use folder_rev_model::{AppRevision, TrashRevision, ViewRevision, WorkspaceRevision};
|
||||
use folder_model::{AppRevision, TrashRevision, ViewRevision, WorkspaceRevision};
|
||||
|
||||
/// V1Transaction is deprecated since version 0.0.2 version
|
||||
pub struct V1Transaction<'a>(pub &'a DBConnection);
|
||||
|
@ -13,7 +13,7 @@ use flowy_database::{
|
||||
SqliteConnection,
|
||||
};
|
||||
|
||||
use folder_rev_model::{ViewDataFormatRevision, ViewLayoutTypeRevision, ViewRevision};
|
||||
use folder_model::{ViewDataFormatRevision, ViewLayoutTypeRevision, ViewRevision};
|
||||
use lib_infra::util::timestamp;
|
||||
|
||||
pub struct ViewTableSql();
|
||||
|
@ -4,7 +4,7 @@ use flowy_database::{
|
||||
prelude::*,
|
||||
schema::{workspace_table, workspace_table::dsl},
|
||||
};
|
||||
use folder_rev_model::WorkspaceRevision;
|
||||
use folder_model::WorkspaceRevision;
|
||||
|
||||
pub(crate) struct WorkspaceTableSql();
|
||||
impl WorkspaceTableSql {
|
||||
|
@ -3,7 +3,7 @@ use crate::services::{
|
||||
persistence::{AppChangeset, FolderPersistenceTransaction, ViewChangeset, WorkspaceChangeset},
|
||||
};
|
||||
use flowy_error::{FlowyError, FlowyResult};
|
||||
use folder_rev_model::{AppRevision, TrashRevision, ViewRevision, WorkspaceRevision};
|
||||
use folder_model::{AppRevision, TrashRevision, ViewRevision, WorkspaceRevision};
|
||||
use std::sync::Arc;
|
||||
|
||||
impl FolderPersistenceTransaction for FolderEditor {
|
||||
|
@ -6,7 +6,7 @@ use crate::{
|
||||
services::persistence::{FolderPersistence, FolderPersistenceTransaction},
|
||||
};
|
||||
|
||||
use folder_rev_model::TrashRevision;
|
||||
use folder_model::TrashRevision;
|
||||
use std::{fmt::Formatter, sync::Arc};
|
||||
use tokio::sync::{broadcast, mpsc};
|
||||
|
||||
|
@ -16,8 +16,7 @@ use crate::{
|
||||
};
|
||||
use bytes::Bytes;
|
||||
use flowy_database::kv::KV;
|
||||
use flowy_http_model::document::DocumentId;
|
||||
use folder_rev_model::{gen_view_id, ViewRevision};
|
||||
use folder_model::{gen_view_id, ViewRevision};
|
||||
use futures::{FutureExt, StreamExt};
|
||||
use std::{collections::HashSet, sync::Arc};
|
||||
|
||||
@ -199,9 +198,8 @@ impl ViewController {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[tracing::instrument(level = "debug", skip(self,params), fields(doc_id = %params.value), err)]
|
||||
pub(crate) async fn move_view_to_trash(&self, params: DocumentId) -> Result<(), FlowyError> {
|
||||
let view_id = params.value;
|
||||
#[tracing::instrument(level = "debug", skip(self), err)]
|
||||
pub(crate) async fn move_view_to_trash(&self, view_id: &str) -> Result<(), FlowyError> {
|
||||
if let Some(latest_view_id) = KV::get_str(LATEST_VIEW_ID) {
|
||||
if latest_view_id == view_id {
|
||||
let _ = KV::remove(LATEST_VIEW_ID);
|
||||
@ -219,7 +217,7 @@ impl ViewController {
|
||||
.position(|view| view.id == view_id)
|
||||
.map(|index| index as i32);
|
||||
Ok(DeletedViewPB {
|
||||
view_id: view_id.clone(),
|
||||
view_id: view_id.to_owned(),
|
||||
index,
|
||||
})
|
||||
})
|
||||
|
@ -13,7 +13,7 @@ use crate::{
|
||||
errors::FlowyError,
|
||||
services::{TrashController, ViewController},
|
||||
};
|
||||
use folder_rev_model::TrashRevision;
|
||||
use folder_model::TrashRevision;
|
||||
use lib_dispatch::prelude::{data_result, AFPluginData, AFPluginState, DataResult};
|
||||
use std::{convert::TryInto, sync::Arc};
|
||||
|
||||
@ -62,7 +62,7 @@ pub(crate) async fn delete_view_handler(
|
||||
) -> Result<(), FlowyError> {
|
||||
let params: RepeatedViewIdPB = data.into_inner();
|
||||
for view_id in ¶ms.items {
|
||||
let _ = view_controller.move_view_to_trash(view_id.into()).await;
|
||||
let _ = view_controller.move_view_to_trash(&view_id).await;
|
||||
}
|
||||
|
||||
let trash = view_controller
|
||||
|
@ -1,17 +1,16 @@
|
||||
use crate::services::FOLDER_SYNC_INTERVAL_IN_MILLIS;
|
||||
use bytes::Bytes;
|
||||
use flowy_client_sync::client_folder::{FolderOperations, FolderPad};
|
||||
use flowy_client_sync::make_operations_from_revisions;
|
||||
use flowy_database::ConnectionPool;
|
||||
use flowy_error::{FlowyError, FlowyResult};
|
||||
use flowy_http_model::revision::{Revision, RevisionRange};
|
||||
use flowy_http_model::ws_data::{ClientRevisionWSData, NewDocumentUser};
|
||||
use flowy_revision::*;
|
||||
use flowy_sync::client_folder::FolderPad;
|
||||
use flowy_sync::server_folder::FolderOperations;
|
||||
use flowy_sync::util::make_operations_from_revisions;
|
||||
use lib_infra::future::{BoxResultFuture, FutureResult};
|
||||
use lib_ot::core::OperationTransform;
|
||||
use parking_lot::RwLock;
|
||||
use revision_model::{Revision, RevisionRange};
|
||||
use std::{sync::Arc, time::Duration};
|
||||
use ws_model::ws_revision::{ClientRevisionWSData, NewDocumentUser};
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct FolderResolveOperations(pub FolderOperations);
|
||||
|
@ -10,7 +10,7 @@ use crate::{
|
||||
},
|
||||
};
|
||||
use flowy_database::kv::KV;
|
||||
use folder_rev_model::{AppRevision, WorkspaceRevision};
|
||||
use folder_model::{AppRevision, WorkspaceRevision};
|
||||
use std::sync::Arc;
|
||||
|
||||
pub struct WorkspaceController {
|
||||
|
Reference in New Issue
Block a user