chore: move collab rt crate (#489)
* chore: create appflowy collaborate crate * chore: remove collab-rt * chore: fmt * chore: main
This commit is contained in:
parent
842e3d14e5
commit
efbe9c4a93
|
|
@ -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"
|
||||||
|
|
|
||||||
|
|
@ -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"
|
||||||
|
|
|
||||||
|
|
@ -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"
|
||||||
|
|
@ -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(())
|
||||||
|
}
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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};
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue