deps.rs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. use std::sync::Arc;
  2. use appflowy_integrate::RocksCollabDB;
  3. pub use collab_database::user::CollabObjectUpdate;
  4. pub use collab_database::user::CollabObjectUpdateByOid;
  5. use flowy_error::FlowyError;
  6. use lib_infra::future::FutureResult;
  7. pub trait DatabaseUser2: Send + Sync {
  8. fn user_id(&self) -> Result<i64, FlowyError>;
  9. fn token(&self) -> Result<Option<String>, FlowyError>;
  10. fn collab_db(&self, uid: i64) -> Result<Arc<RocksCollabDB>, FlowyError>;
  11. }
  12. /// A trait for database cloud service.
  13. /// Each kind of server should implement this trait. Check out the [AppFlowyServerProvider] of
  14. /// [flowy-server] crate for more information.
  15. pub trait DatabaseCloudService: Send + Sync {
  16. fn get_collab_update(&self, object_id: &str) -> FutureResult<CollabObjectUpdate, FlowyError>;
  17. fn batch_get_collab_updates(
  18. &self,
  19. object_ids: Vec<String>,
  20. ) -> FutureResult<CollabObjectUpdateByOid, FlowyError>;
  21. fn get_collab_latest_snapshot(
  22. &self,
  23. object_id: &str,
  24. ) -> FutureResult<Option<DatabaseSnapshot>, FlowyError>;
  25. }
  26. pub struct DatabaseSnapshot {
  27. pub snapshot_id: i64,
  28. pub database_id: String,
  29. pub data: Vec<u8>,
  30. pub created_at: i64,
  31. }