diff --git a/Cargo.lock b/Cargo.lock index bb81df4f..4030cdf5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -599,6 +599,7 @@ dependencies = [ "anyhow", "app-error", "appflowy-ai", + "appflowy-collaborate", "argon2", "assert-json-diff", "async-stream", @@ -613,7 +614,6 @@ dependencies = [ "collab-document", "collab-entity", "collab-folder", - "collab-rt", "collab-rt-entity", "collab-stream", "dashmap", @@ -672,6 +672,46 @@ dependencies = [ "workspace-template", ] +[[package]] +name = "appflowy-collaborate" +version = "0.1.0" +dependencies = [ + "anyhow", + "app-error", + "async-stream", + "async-trait", + "bytes", + "chrono", + "collab", + "collab-document", + "collab-entity", + "collab-folder", + "collab-rt-entity", + "collab-rt-protocol", + "dashmap", + "database", + "database-entity", + "futures", + "futures-util", + "indexmap 2.2.5", + "lazy_static", + "md5", + "parking_lot 0.12.1", + "prometheus-client", + "rand 0.8.5", + "redis 0.25.2", + "semver", + "serde", + "serde_json", + "thiserror", + "tokio", + "tokio-stream", + "tokio-util", + "tracing", + "uuid", + "yrs", +] + [[package]] name = "appflowy-history" version = "0.1.0" @@ -1683,46 +1723,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "collab-rt" -version = "0.1.0" -dependencies = [ - "anyhow", - "app-error", - "async-stream", - "async-trait", - "bytes", - "chrono", - "collab", - "collab-document", - "collab-entity", - "collab-folder", - "collab-rt-entity", - "collab-rt-protocol", - "dashmap", - "database", - "database-entity", - "futures", - "futures-util", - "indexmap 2.2.5", - "lazy_static", - "md5", - "parking_lot 0.12.1", - "prometheus-client", - "rand 0.8.5", - "redis 0.25.2", - "semver", - "serde", - "serde_json", - "thiserror", - "tokio", - "tokio-stream", - "tokio-util", - "tracing", - "uuid", - "yrs", -] - [[package]] name = "collab-rt-entity" version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml index 27a34e29..b4e648f9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -70,6 +70,7 @@ governor = { version = "0.6.3" } tonic.workspace = true prost.workspace = true tonic-proto.workspace = true +appflowy-collaborate = { path = "services/appflowy-collaborate", features = ["collab-rt-multi-thread"] } # collab collab = { version = "0.1.0" } @@ -91,7 +92,6 @@ shared-entity = { path = "libs/shared-entity", features = ["cloud"] } workspace-template = { workspace = true } collab-rt-entity.workspace = true collab-stream.workspace = true -collab-rt.workspace = true serde_repr = "0.1.18" tonic-build = "0.11.0" log = "0.4.20" @@ -145,11 +145,11 @@ members = [ "libs/client-api-test-util", "libs/wasm-test", "libs/appflowy-ai", - "libs/collab-rt", "libs/client-api-wasm", # services "services/appflowy-history", "services/realtime", + "services/appflowy-collaborate", # xtask "xtask", "libs/tonic-proto", ] @@ -191,7 +191,6 @@ dashmap = "5.5.3" futures = "0.3.30" async-stream = "0.3.5" reqwest = "0.11.27" -collab-rt = { path = "libs/collab-rt", features = ["collab-rt-multi-thread"] } lazy_static = "1.4.0" tonic = "0.11" prost = "0.12" diff --git a/libs/collab-rt/Cargo.toml b/services/appflowy-collaborate/Cargo.toml similarity index 89% rename from libs/collab-rt/Cargo.toml rename to services/appflowy-collaborate/Cargo.toml index 5b9c6e56..f928796f 100644 --- a/libs/collab-rt/Cargo.toml +++ b/services/appflowy-collaborate/Cargo.toml @@ -1,9 +1,15 @@ [package] -name = "collab-rt" +name = "appflowy-collaborate" version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html +[[bin]] +name = "appflowy_collaborate" +path = "src/main.rs" + +[lib] +path = "src/lib.rs" [dependencies] app-error = { workspace = true } @@ -26,7 +32,7 @@ collab = { version = "0.1.0" } collab-entity = { version = "0.1.0" } collab-folder = { version = "0.1.0" } collab-document = { version = "0.1.0" } -database = { path = "../database" } +database.workspace = true database-entity.workspace = true yrs.workspace = true chrono = "0.4.31" diff --git a/libs/collab-rt/src/client_msg_router.rs b/services/appflowy-collaborate/src/client_msg_router.rs similarity index 100% rename from libs/collab-rt/src/client_msg_router.rs rename to services/appflowy-collaborate/src/client_msg_router.rs diff --git a/libs/collab-rt/src/command.rs b/services/appflowy-collaborate/src/command.rs similarity index 100% rename from libs/collab-rt/src/command.rs rename to services/appflowy-collaborate/src/command.rs diff --git a/libs/collab-rt/src/connect_state.rs b/services/appflowy-collaborate/src/connect_state.rs similarity index 100% rename from libs/collab-rt/src/connect_state.rs rename to services/appflowy-collaborate/src/connect_state.rs diff --git a/libs/collab-rt/src/data_validation.rs b/services/appflowy-collaborate/src/data_validation.rs similarity index 100% rename from libs/collab-rt/src/data_validation.rs rename to services/appflowy-collaborate/src/data_validation.rs diff --git a/libs/collab-rt/src/error.rs b/services/appflowy-collaborate/src/error.rs similarity index 100% rename from libs/collab-rt/src/error.rs rename to services/appflowy-collaborate/src/error.rs diff --git a/libs/collab-rt/src/group/broadcast.rs b/services/appflowy-collaborate/src/group/broadcast.rs similarity index 100% rename from libs/collab-rt/src/group/broadcast.rs rename to services/appflowy-collaborate/src/group/broadcast.rs diff --git a/libs/collab-rt/src/group/cmd.rs b/services/appflowy-collaborate/src/group/cmd.rs similarity index 100% rename from libs/collab-rt/src/group/cmd.rs rename to services/appflowy-collaborate/src/group/cmd.rs diff --git a/libs/collab-rt/src/group/group_init.rs b/services/appflowy-collaborate/src/group/group_init.rs similarity index 100% rename from libs/collab-rt/src/group/group_init.rs rename to services/appflowy-collaborate/src/group/group_init.rs diff --git a/libs/collab-rt/src/group/manager.rs b/services/appflowy-collaborate/src/group/manager.rs similarity index 100% rename from libs/collab-rt/src/group/manager.rs rename to services/appflowy-collaborate/src/group/manager.rs diff --git a/libs/collab-rt/src/group/mod.rs b/services/appflowy-collaborate/src/group/mod.rs similarity index 100% rename from libs/collab-rt/src/group/mod.rs rename to services/appflowy-collaborate/src/group/mod.rs diff --git a/libs/collab-rt/src/group/persistence.rs b/services/appflowy-collaborate/src/group/persistence.rs similarity index 100% rename from libs/collab-rt/src/group/persistence.rs rename to services/appflowy-collaborate/src/group/persistence.rs diff --git a/libs/collab-rt/src/group/plugin/history_plugin.rs b/services/appflowy-collaborate/src/group/plugin/history_plugin.rs similarity index 100% rename from libs/collab-rt/src/group/plugin/history_plugin.rs rename to services/appflowy-collaborate/src/group/plugin/history_plugin.rs diff --git a/libs/collab-rt/src/group/plugin/mod.rs b/services/appflowy-collaborate/src/group/plugin/mod.rs similarity index 100% rename from libs/collab-rt/src/group/plugin/mod.rs rename to services/appflowy-collaborate/src/group/plugin/mod.rs diff --git a/libs/collab-rt/src/group/protocol.rs b/services/appflowy-collaborate/src/group/protocol.rs similarity index 100% rename from libs/collab-rt/src/group/protocol.rs rename to services/appflowy-collaborate/src/group/protocol.rs diff --git a/libs/collab-rt/src/group/state.rs b/services/appflowy-collaborate/src/group/state.rs similarity index 100% rename from libs/collab-rt/src/group/state.rs rename to services/appflowy-collaborate/src/group/state.rs diff --git a/libs/collab-rt/src/lib.rs b/services/appflowy-collaborate/src/lib.rs similarity index 100% rename from libs/collab-rt/src/lib.rs rename to services/appflowy-collaborate/src/lib.rs diff --git a/services/appflowy-collaborate/src/main.rs b/services/appflowy-collaborate/src/main.rs new file mode 100644 index 00000000..00306738 --- /dev/null +++ b/services/appflowy-collaborate/src/main.rs @@ -0,0 +1,5 @@ +#[tokio::main] +async fn main() -> Result<(), Box> { + // add more logics that supports deploy appflowy-collaborate as single service + Ok(()) +} diff --git a/libs/collab-rt/src/metrics.rs b/services/appflowy-collaborate/src/metrics.rs similarity index 100% rename from libs/collab-rt/src/metrics.rs rename to services/appflowy-collaborate/src/metrics.rs diff --git a/libs/collab-rt/src/permission.rs b/services/appflowy-collaborate/src/permission.rs similarity index 100% rename from libs/collab-rt/src/permission.rs rename to services/appflowy-collaborate/src/permission.rs diff --git a/libs/collab-rt/src/rt_server.rs b/services/appflowy-collaborate/src/rt_server.rs similarity index 100% rename from libs/collab-rt/src/rt_server.rs rename to services/appflowy-collaborate/src/rt_server.rs diff --git a/libs/collab-rt/src/util/channel_ext.rs b/services/appflowy-collaborate/src/util/channel_ext.rs similarity index 100% rename from libs/collab-rt/src/util/channel_ext.rs rename to services/appflowy-collaborate/src/util/channel_ext.rs diff --git a/libs/collab-rt/src/util/mod.rs b/services/appflowy-collaborate/src/util/mod.rs similarity index 100% rename from libs/collab-rt/src/util/mod.rs rename to services/appflowy-collaborate/src/util/mod.rs diff --git a/src/api/workspace.rs b/src/api/workspace.rs index 140bf614..423f2f4d 100644 --- a/src/api/workspace.rs +++ b/src/api/workspace.rs @@ -13,10 +13,10 @@ use actix_web::{web, Scope}; use actix_web::{HttpRequest, Result}; use anyhow::{anyhow, Context}; use app_error::AppError; +use appflowy_collaborate::data_validation::{validate_encode_collab, CollabValidator}; use bytes::BytesMut; use collab::core::collab_plugin::EncodedCollab; use collab_entity::CollabType; -use collab_rt::data_validation::{validate_encode_collab, CollabValidator}; use collab_rt_entity::realtime_proto::HttpRealtimeMessage; use collab_rt_entity::RealtimeMessage; diff --git a/src/application.rs b/src/application.rs index bc2512a3..4176a33b 100644 --- a/src/application.rs +++ b/src/application.rs @@ -31,8 +31,8 @@ use actix_session::SessionMiddleware; use actix_web::cookie::Key; use actix_web::{dev::Server, web, web::Data, App, HttpServer}; use anyhow::{Context, Error}; -use collab_rt::command::{RTCommandReceiver, RTCommandSender}; -use collab_rt::CollaborationServer; +use appflowy_collaborate::command::{RTCommandReceiver, RTCommandSender}; +use appflowy_collaborate::CollaborationServer; use database::file::bucket_s3_impl::S3BucketStorage; use openssl::ssl::{SslAcceptor, SslAcceptorBuilder, SslFiletype, SslMethod}; use openssl::x509::X509; diff --git a/src/biz/actix_ws/client/rt_client.rs b/src/biz/actix_ws/client/rt_client.rs index 51aa65b3..01b5b307 100644 --- a/src/biz/actix_ws/client/rt_client.rs +++ b/src/biz/actix_ws/client/rt_client.rs @@ -6,10 +6,10 @@ use actix::{ use actix_web_actors::ws; use actix_web_actors::ws::{CloseCode, CloseReason, ProtocolError, WebsocketContext}; use anyhow::anyhow; +use appflowy_collaborate::error::RealtimeError; +use appflowy_collaborate::RealtimeClientWebsocketSink; use async_trait::async_trait; use bytes::Bytes; -use collab_rt::error::RealtimeError; -use collab_rt::RealtimeClientWebsocketSink; use collab_rt_entity::user::RealtimeUser; use collab_rt_entity::SystemMessage; use governor::clock::DefaultClock; diff --git a/src/biz/actix_ws/entities.rs b/src/biz/actix_ws/entities.rs index 9c1f697b..52d7f650 100644 --- a/src/biz/actix_ws/entities.rs +++ b/src/biz/actix_ws/entities.rs @@ -1,5 +1,5 @@ use actix::{Message, Recipient}; -use collab_rt::error::RealtimeError; +use appflowy_collaborate::error::RealtimeError; use serde_repr::{Deserialize_repr, Serialize_repr}; use std::fmt::Debug; diff --git a/src/biz/actix_ws/server/rt_actor.rs b/src/biz/actix_ws/server/rt_actor.rs index a27a9028..9479cf4d 100644 --- a/src/biz/actix_ws/server/rt_actor.rs +++ b/src/biz/actix_ws/server/rt_actor.rs @@ -1,8 +1,8 @@ use crate::biz::actix_ws::client::rt_client::{RealtimeClientWebsocketSinkImpl, RealtimeServer}; use crate::biz::actix_ws::entities::{ClientMessage, ClientStreamMessage, Connect, Disconnect}; use actix::{Actor, Context, Handler, ResponseFuture}; -use collab_rt::error::RealtimeError; -use collab_rt::{CollaborationServer, RealtimeAccessControl}; +use appflowy_collaborate::error::RealtimeError; +use appflowy_collaborate::{CollaborationServer, RealtimeAccessControl}; use collab_rt_entity::user::UserDevice; use database::collab::CollabStorage; use std::ops::Deref; diff --git a/src/biz/casbin/collab_ac.rs b/src/biz/casbin/collab_ac.rs index bdfcfbc6..37e5ad60 100644 --- a/src/biz/casbin/collab_ac.rs +++ b/src/biz/casbin/collab_ac.rs @@ -3,8 +3,8 @@ use access_control::access::ObjectType; use access_control::access::{enable_access_control, AccessControl}; use access_control::act::{Action, ActionVariant}; use app_error::AppError; +use appflowy_collaborate::RealtimeAccessControl; use async_trait::async_trait; -use collab_rt::RealtimeAccessControl; use database_entity::dto::AFAccessLevel; use tracing::instrument; diff --git a/src/biz/collab/storage.rs b/src/biz/collab/storage.rs index 7d33f654..7bc44a04 100644 --- a/src/biz/collab/storage.rs +++ b/src/biz/collab/storage.rs @@ -8,7 +8,7 @@ use async_trait::async_trait; use collab::core::collab_plugin::EncodedCollab; -use collab_rt::command::{RTCommand, RTCommandSender}; +use appflowy_collaborate::command::{RTCommand, RTCommandSender}; use database::collab::{AppResult, CollabStorage, CollabStorageAccessControl}; use database_entity::dto::{ AFAccessLevel, AFSnapshotMeta, AFSnapshotMetas, CollabParams, InsertSnapshotParams, QueryCollab, @@ -17,7 +17,7 @@ use database_entity::dto::{ use itertools::{Either, Itertools}; use crate::state::RedisConnectionManager; -use collab_rt::data_validation::CollabValidator; +use appflowy_collaborate::data_validation::CollabValidator; use sqlx::Transaction; use std::collections::HashMap; use std::sync::Arc; diff --git a/src/biz/snapshot/snapshot_control.rs b/src/biz/snapshot/snapshot_control.rs index 280db817..2e46a160 100644 --- a/src/biz/snapshot/snapshot_control.rs +++ b/src/biz/snapshot/snapshot_control.rs @@ -4,8 +4,8 @@ use crate::biz::snapshot::queue::PendingQueue; use crate::state::RedisConnectionManager; use anyhow::anyhow; use app_error::AppError; +use appflowy_collaborate::data_validation::validate_encode_collab; use async_stream::stream; -use collab_rt::data_validation::validate_encode_collab; use database::collab::{ create_snapshot_and_maintain_limit, get_all_collab_snapshot_meta, latest_snapshot_time, select_snapshot, AppResult, COLLAB_SNAPSHOT_LIMIT, SNAPSHOT_PER_HOUR, diff --git a/src/state.rs b/src/state.rs index 05a29b1e..95697449 100644 --- a/src/state.rs +++ b/src/state.rs @@ -9,7 +9,7 @@ use crate::config::config::Config; use access_control::access::AccessControl; use access_control::metrics::AccessControlMetrics; use app_error::AppError; -use collab_rt::CollabRealtimeMetrics; +use appflowy_collaborate::CollabRealtimeMetrics; use dashmap::DashMap; use database::file::bucket_s3_impl::S3BucketStorage; use database::user::{select_all_uid_uuid, select_uid_from_uuid};