chore: move collab rt crate (#489)

* chore: create appflowy collaborate crate

* chore: remove collab-rt

* chore: fmt

* chore: main
This commit is contained in:
Nathan.fooo 2024-04-22 12:14:41 +08:00 committed by GitHub
parent 842e3d14e5
commit efbe9c4a93
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
34 changed files with 69 additions and 59 deletions

82
Cargo.lock generated
View File

@ -599,6 +599,7 @@ dependencies = [
"anyhow", "anyhow",
"app-error", "app-error",
"appflowy-ai", "appflowy-ai",
"appflowy-collaborate",
"argon2", "argon2",
"assert-json-diff", "assert-json-diff",
"async-stream", "async-stream",
@ -613,7 +614,6 @@ dependencies = [
"collab-document", "collab-document",
"collab-entity", "collab-entity",
"collab-folder", "collab-folder",
"collab-rt",
"collab-rt-entity", "collab-rt-entity",
"collab-stream", "collab-stream",
"dashmap", "dashmap",
@ -672,6 +672,46 @@ dependencies = [
"workspace-template", "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]] [[package]]
name = "appflowy-history" name = "appflowy-history"
version = "0.1.0" version = "0.1.0"
@ -1683,46 +1723,6 @@ dependencies = [
"tracing", "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]] [[package]]
name = "collab-rt-entity" name = "collab-rt-entity"
version = "0.1.0" version = "0.1.0"

View File

@ -70,6 +70,7 @@ governor = { version = "0.6.3" }
tonic.workspace = true tonic.workspace = true
prost.workspace = true prost.workspace = true
tonic-proto.workspace = true tonic-proto.workspace = true
appflowy-collaborate = { path = "services/appflowy-collaborate", features = ["collab-rt-multi-thread"] }
# collab # collab
collab = { version = "0.1.0" } collab = { version = "0.1.0" }
@ -91,7 +92,6 @@ shared-entity = { path = "libs/shared-entity", features = ["cloud"] }
workspace-template = { workspace = true } workspace-template = { workspace = true }
collab-rt-entity.workspace = true collab-rt-entity.workspace = true
collab-stream.workspace = true collab-stream.workspace = true
collab-rt.workspace = true
serde_repr = "0.1.18" serde_repr = "0.1.18"
tonic-build = "0.11.0" tonic-build = "0.11.0"
log = "0.4.20" log = "0.4.20"
@ -145,11 +145,11 @@ members = [
"libs/client-api-test-util", "libs/client-api-test-util",
"libs/wasm-test", "libs/wasm-test",
"libs/appflowy-ai", "libs/appflowy-ai",
"libs/collab-rt",
"libs/client-api-wasm", "libs/client-api-wasm",
# services # services
"services/appflowy-history", "services/appflowy-history",
"services/realtime", "services/realtime",
"services/appflowy-collaborate",
# xtask # xtask
"xtask", "libs/tonic-proto", "xtask", "libs/tonic-proto",
] ]
@ -191,7 +191,6 @@ dashmap = "5.5.3"
futures = "0.3.30" futures = "0.3.30"
async-stream = "0.3.5" async-stream = "0.3.5"
reqwest = "0.11.27" reqwest = "0.11.27"
collab-rt = { path = "libs/collab-rt", features = ["collab-rt-multi-thread"] }
lazy_static = "1.4.0" lazy_static = "1.4.0"
tonic = "0.11" tonic = "0.11"
prost = "0.12" prost = "0.12"

View File

@ -1,9 +1,15 @@
[package] [package]
name = "collab-rt" name = "appflowy-collaborate"
version = "0.1.0" version = "0.1.0"
edition = "2021" edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html # 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] [dependencies]
app-error = { workspace = true } app-error = { workspace = true }
@ -26,7 +32,7 @@ collab = { version = "0.1.0" }
collab-entity = { version = "0.1.0" } collab-entity = { version = "0.1.0" }
collab-folder = { version = "0.1.0" } collab-folder = { version = "0.1.0" }
collab-document = { version = "0.1.0" } collab-document = { version = "0.1.0" }
database = { path = "../database" } database.workspace = true
database-entity.workspace = true database-entity.workspace = true
yrs.workspace = true yrs.workspace = true
chrono = "0.4.31" chrono = "0.4.31"

View File

@ -0,0 +1,5 @@
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
// add more logics that supports deploy appflowy-collaborate as single service
Ok(())
}

View File

@ -13,10 +13,10 @@ use actix_web::{web, Scope};
use actix_web::{HttpRequest, Result}; use actix_web::{HttpRequest, Result};
use anyhow::{anyhow, Context}; use anyhow::{anyhow, Context};
use app_error::AppError; use app_error::AppError;
use appflowy_collaborate::data_validation::{validate_encode_collab, CollabValidator};
use bytes::BytesMut; use bytes::BytesMut;
use collab::core::collab_plugin::EncodedCollab; use collab::core::collab_plugin::EncodedCollab;
use collab_entity::CollabType; use collab_entity::CollabType;
use collab_rt::data_validation::{validate_encode_collab, CollabValidator};
use collab_rt_entity::realtime_proto::HttpRealtimeMessage; use collab_rt_entity::realtime_proto::HttpRealtimeMessage;
use collab_rt_entity::RealtimeMessage; use collab_rt_entity::RealtimeMessage;

View File

@ -31,8 +31,8 @@ use actix_session::SessionMiddleware;
use actix_web::cookie::Key; use actix_web::cookie::Key;
use actix_web::{dev::Server, web, web::Data, App, HttpServer}; use actix_web::{dev::Server, web, web::Data, App, HttpServer};
use anyhow::{Context, Error}; use anyhow::{Context, Error};
use collab_rt::command::{RTCommandReceiver, RTCommandSender}; use appflowy_collaborate::command::{RTCommandReceiver, RTCommandSender};
use collab_rt::CollaborationServer; use appflowy_collaborate::CollaborationServer;
use database::file::bucket_s3_impl::S3BucketStorage; use database::file::bucket_s3_impl::S3BucketStorage;
use openssl::ssl::{SslAcceptor, SslAcceptorBuilder, SslFiletype, SslMethod}; use openssl::ssl::{SslAcceptor, SslAcceptorBuilder, SslFiletype, SslMethod};
use openssl::x509::X509; use openssl::x509::X509;

View File

@ -6,10 +6,10 @@ use actix::{
use actix_web_actors::ws; use actix_web_actors::ws;
use actix_web_actors::ws::{CloseCode, CloseReason, ProtocolError, WebsocketContext}; use actix_web_actors::ws::{CloseCode, CloseReason, ProtocolError, WebsocketContext};
use anyhow::anyhow; use anyhow::anyhow;
use appflowy_collaborate::error::RealtimeError;
use appflowy_collaborate::RealtimeClientWebsocketSink;
use async_trait::async_trait; use async_trait::async_trait;
use bytes::Bytes; use bytes::Bytes;
use collab_rt::error::RealtimeError;
use collab_rt::RealtimeClientWebsocketSink;
use collab_rt_entity::user::RealtimeUser; use collab_rt_entity::user::RealtimeUser;
use collab_rt_entity::SystemMessage; use collab_rt_entity::SystemMessage;
use governor::clock::DefaultClock; use governor::clock::DefaultClock;

View File

@ -1,5 +1,5 @@
use actix::{Message, Recipient}; use actix::{Message, Recipient};
use collab_rt::error::RealtimeError; use appflowy_collaborate::error::RealtimeError;
use serde_repr::{Deserialize_repr, Serialize_repr}; use serde_repr::{Deserialize_repr, Serialize_repr};
use std::fmt::Debug; use std::fmt::Debug;

View File

@ -1,8 +1,8 @@
use crate::biz::actix_ws::client::rt_client::{RealtimeClientWebsocketSinkImpl, RealtimeServer}; use crate::biz::actix_ws::client::rt_client::{RealtimeClientWebsocketSinkImpl, RealtimeServer};
use crate::biz::actix_ws::entities::{ClientMessage, ClientStreamMessage, Connect, Disconnect}; use crate::biz::actix_ws::entities::{ClientMessage, ClientStreamMessage, Connect, Disconnect};
use actix::{Actor, Context, Handler, ResponseFuture}; use actix::{Actor, Context, Handler, ResponseFuture};
use collab_rt::error::RealtimeError; use appflowy_collaborate::error::RealtimeError;
use collab_rt::{CollaborationServer, RealtimeAccessControl}; use appflowy_collaborate::{CollaborationServer, RealtimeAccessControl};
use collab_rt_entity::user::UserDevice; use collab_rt_entity::user::UserDevice;
use database::collab::CollabStorage; use database::collab::CollabStorage;
use std::ops::Deref; use std::ops::Deref;

View File

@ -3,8 +3,8 @@ use access_control::access::ObjectType;
use access_control::access::{enable_access_control, AccessControl}; use access_control::access::{enable_access_control, AccessControl};
use access_control::act::{Action, ActionVariant}; use access_control::act::{Action, ActionVariant};
use app_error::AppError; use app_error::AppError;
use appflowy_collaborate::RealtimeAccessControl;
use async_trait::async_trait; use async_trait::async_trait;
use collab_rt::RealtimeAccessControl;
use database_entity::dto::AFAccessLevel; use database_entity::dto::AFAccessLevel;
use tracing::instrument; use tracing::instrument;

View File

@ -8,7 +8,7 @@ use async_trait::async_trait;
use collab::core::collab_plugin::EncodedCollab; 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::collab::{AppResult, CollabStorage, CollabStorageAccessControl};
use database_entity::dto::{ use database_entity::dto::{
AFAccessLevel, AFSnapshotMeta, AFSnapshotMetas, CollabParams, InsertSnapshotParams, QueryCollab, AFAccessLevel, AFSnapshotMeta, AFSnapshotMetas, CollabParams, InsertSnapshotParams, QueryCollab,
@ -17,7 +17,7 @@ use database_entity::dto::{
use itertools::{Either, Itertools}; use itertools::{Either, Itertools};
use crate::state::RedisConnectionManager; use crate::state::RedisConnectionManager;
use collab_rt::data_validation::CollabValidator; use appflowy_collaborate::data_validation::CollabValidator;
use sqlx::Transaction; use sqlx::Transaction;
use std::collections::HashMap; use std::collections::HashMap;
use std::sync::Arc; use std::sync::Arc;

View File

@ -4,8 +4,8 @@ use crate::biz::snapshot::queue::PendingQueue;
use crate::state::RedisConnectionManager; use crate::state::RedisConnectionManager;
use anyhow::anyhow; use anyhow::anyhow;
use app_error::AppError; use app_error::AppError;
use appflowy_collaborate::data_validation::validate_encode_collab;
use async_stream::stream; use async_stream::stream;
use collab_rt::data_validation::validate_encode_collab;
use database::collab::{ use database::collab::{
create_snapshot_and_maintain_limit, get_all_collab_snapshot_meta, latest_snapshot_time, create_snapshot_and_maintain_limit, get_all_collab_snapshot_meta, latest_snapshot_time,
select_snapshot, AppResult, COLLAB_SNAPSHOT_LIMIT, SNAPSHOT_PER_HOUR, select_snapshot, AppResult, COLLAB_SNAPSHOT_LIMIT, SNAPSHOT_PER_HOUR,

View File

@ -9,7 +9,7 @@ use crate::config::config::Config;
use access_control::access::AccessControl; use access_control::access::AccessControl;
use access_control::metrics::AccessControlMetrics; use access_control::metrics::AccessControlMetrics;
use app_error::AppError; use app_error::AppError;
use collab_rt::CollabRealtimeMetrics; use appflowy_collaborate::CollabRealtimeMetrics;
use dashmap::DashMap; use dashmap::DashMap;
use database::file::bucket_s3_impl::S3BucketStorage; use database::file::bucket_s3_impl::S3BucketStorage;
use database::user::{select_all_uid_uuid, select_uid_from_uuid}; use database::user::{select_all_uid_uuid, select_uid_from_uuid};