Feat/http server adapt (#1754)

This commit is contained in:
Nathan.fooo
2023-01-30 11:11:19 +08:00
committed by GitHub
parent 000569a836
commit 0d8adaa921
301 changed files with 2181 additions and 1768 deletions

View File

@ -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" }

View File

@ -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)]

View File

@ -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;

View File

@ -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)]

View File

@ -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)]

View File

@ -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;

View File

@ -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());
}

View File

@ -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};

View File

@ -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};

View File

@ -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)]

View File

@ -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";

View File

@ -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::*};

View File

@ -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 {

View File

@ -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 {

View File

@ -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 {

View File

@ -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);

View File

@ -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();

View File

@ -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 {

View File

@ -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 {

View File

@ -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};

View File

@ -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,
})
})

View File

@ -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 &params.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

View File

@ -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);

View File

@ -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 {