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",
"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"

View File

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

View File

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

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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