module.rs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. use crate::flowy_server::{ArcFlowyServer, FlowyServerMocker};
  2. use flowy_database::DBConnection;
  3. use flowy_dispatch::prelude::{DispatchFuture, Module};
  4. use flowy_user::prelude::*;
  5. use flowy_workspace::prelude::*;
  6. use std::sync::Arc;
  7. pub struct ModuleConfig {
  8. pub root: String,
  9. }
  10. pub fn build_modules(config: ModuleConfig, _server: ArcFlowyServer) -> Vec<Module> {
  11. let user_session = Arc::new(
  12. UserSessionBuilder::new()
  13. .root_dir(&config.root)
  14. .build(Arc::new(FlowyServerMocker {})),
  15. );
  16. let workspace_user_impl = Arc::new(WorkspaceUserImpl {
  17. user_session: user_session.clone(),
  18. });
  19. vec![
  20. flowy_user::module::create(user_session),
  21. flowy_workspace::module::create(workspace_user_impl),
  22. ]
  23. }
  24. pub struct WorkspaceUserImpl {
  25. user_session: Arc<UserSession>,
  26. }
  27. impl WorkspaceUser for WorkspaceUserImpl {
  28. fn set_workspace(&self, workspace_id: &str) -> DispatchFuture<Result<(), WorkspaceError>> {
  29. let user_session = self.user_session.clone();
  30. let workspace_id = workspace_id.to_owned();
  31. DispatchFuture {
  32. fut: Box::pin(async move {
  33. let _ = user_session
  34. .set_current_workspace(&workspace_id)
  35. .await
  36. .map_err(|e| {
  37. ErrorBuilder::new(WorkspaceErrorCode::UserInternalError)
  38. .error(e)
  39. .build()
  40. });
  41. Ok(())
  42. }),
  43. }
  44. }
  45. fn get_workspace(&self) -> Result<String, WorkspaceError> {
  46. let user_detail = self.user_session.user_detail().map_err(|e| {
  47. ErrorBuilder::new(WorkspaceErrorCode::UserNotLoginYet)
  48. .error(e)
  49. .build()
  50. })?;
  51. Ok(user_detail.id)
  52. }
  53. fn db_connection(&self) -> Result<DBConnection, WorkspaceError> {
  54. self.user_session.get_db_connection().map_err(|e| {
  55. ErrorBuilder::new(WorkspaceErrorCode::DatabaseConnectionFail)
  56. .error(e)
  57. .build()
  58. })
  59. }
  60. }