workspace_user_impl.rs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. use flowy_database::DBConnection;
  2. use flowy_dispatch::prelude::DispatchFuture;
  3. use flowy_user::prelude::UserSession;
  4. use flowy_workspace::{
  5. entities::workspace::CurrentWorkspace,
  6. errors::{ErrorBuilder, WorkspaceError, WorkspaceErrorCode},
  7. module::{WorkspaceDatabase, WorkspaceUser},
  8. };
  9. use std::sync::Arc;
  10. pub struct WorkspaceUserImpl {
  11. pub(crate) user_session: Arc<UserSession>,
  12. }
  13. impl WorkspaceUser for WorkspaceUserImpl {
  14. fn set_cur_workspace_id(
  15. &self,
  16. workspace_id: &str,
  17. ) -> DispatchFuture<Result<(), WorkspaceError>> {
  18. let user_session = self.user_session.clone();
  19. let workspace_id = workspace_id.to_owned();
  20. DispatchFuture {
  21. fut: Box::pin(async move {
  22. let _ = user_session
  23. .set_current_workspace(&workspace_id)
  24. .await
  25. .map_err(|e| {
  26. ErrorBuilder::new(WorkspaceErrorCode::UserInternalError)
  27. .error(e)
  28. .build()
  29. });
  30. Ok(())
  31. }),
  32. }
  33. }
  34. fn get_cur_workspace(&self) -> DispatchFuture<Result<CurrentWorkspace, WorkspaceError>> {
  35. let user_session = self.user_session.clone();
  36. DispatchFuture {
  37. fut: Box::pin(async move {
  38. let user_detail = user_session.user_detail().map_err(|e| {
  39. ErrorBuilder::new(WorkspaceErrorCode::UserNotLoginYet)
  40. .error(e)
  41. .build()
  42. })?;
  43. Ok(CurrentWorkspace {
  44. owner: user_detail.email,
  45. workspace_id: user_detail.workspace,
  46. })
  47. }),
  48. }
  49. }
  50. }
  51. pub struct WorkspaceDatabaseImpl {
  52. pub(crate) user_session: Arc<UserSession>,
  53. }
  54. impl WorkspaceDatabase for WorkspaceDatabaseImpl {
  55. fn db_connection(&self) -> Result<DBConnection, WorkspaceError> {
  56. self.user_session.get_db_connection().map_err(|e| {
  57. ErrorBuilder::new(WorkspaceErrorCode::DatabaseConnectionFail)
  58. .error(e)
  59. .build()
  60. })
  61. }
  62. }