use std::sync::Arc; use appflowy_integrate::RocksCollabDB; pub use collab_database::user::CollabObjectUpdate; pub use collab_database::user::CollabObjectUpdateByOid; use flowy_error::FlowyError; use lib_infra::future::FutureResult; pub trait DatabaseUser2: Send + Sync { fn user_id(&self) -> Result; fn token(&self) -> Result, FlowyError>; fn collab_db(&self, uid: i64) -> Result, FlowyError>; } /// A trait for database cloud service. /// Each kind of server should implement this trait. Check out the [AppFlowyServerProvider] of /// [flowy-server] crate for more information. pub trait DatabaseCloudService: Send + Sync { fn get_collab_update(&self, object_id: &str) -> FutureResult; fn batch_get_collab_updates( &self, object_ids: Vec, ) -> FutureResult; fn get_collab_latest_snapshot( &self, object_id: &str, ) -> FutureResult, FlowyError>; } pub struct DatabaseSnapshot { pub snapshot_id: i64, pub database_id: String, pub data: Vec, pub created_at: i64, }