flowy_server.rs 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. use flowy_dispatch::prelude::{
  2. DispatchError,
  3. DispatchFuture,
  4. EventDispatch,
  5. ModuleRequest,
  6. ToBytes,
  7. };
  8. use flowy_user::{
  9. entities::{SignInParams, SignUpParams, UserDetail},
  10. errors::{ErrorBuilder, UserErrCode, UserError},
  11. prelude::UserServer,
  12. sql_tables::UserTable,
  13. };
  14. use flowy_workspace::{
  15. entities::workspace::{CreateWorkspaceRequest, Workspace},
  16. event::WorkspaceEvent::CreateWorkspace,
  17. };
  18. pub type ArcFlowyServer = std::sync::Arc<dyn FlowyServer>;
  19. pub trait FlowyServer: UserServer {}
  20. pub struct FlowyServerMocker {}
  21. impl FlowyServer for FlowyServerMocker {}
  22. impl UserServer for FlowyServerMocker {
  23. fn sign_up(&self, params: SignUpParams) -> Result<UserTable, UserError> {
  24. let user_id = params.email.clone();
  25. Ok(UserTable::new(
  26. user_id,
  27. params.name,
  28. params.email,
  29. params.password,
  30. ))
  31. }
  32. fn sign_in(&self, params: SignInParams) -> Result<UserTable, UserError> {
  33. let user_id = params.email.clone();
  34. Ok(UserTable::new(
  35. user_id,
  36. "".to_owned(),
  37. params.email,
  38. params.password,
  39. ))
  40. }
  41. fn sign_out(&self, _user_id: &str) -> Result<(), UserError> {
  42. Err(ErrorBuilder::new(UserErrCode::Unknown).build())
  43. }
  44. fn get_user_info(&self, _user_id: &str) -> Result<UserDetail, UserError> {
  45. Err(ErrorBuilder::new(UserErrCode::Unknown).build())
  46. }
  47. fn create_workspace(
  48. &self,
  49. name: &str,
  50. desc: &str,
  51. _user_id: &str,
  52. ) -> DispatchFuture<Result<String, UserError>> {
  53. log::info!("Create user workspace: {:?}", name);
  54. let payload: Vec<u8> = CreateWorkspaceRequest {
  55. name: name.to_string(),
  56. desc: desc.to_string(),
  57. }
  58. .into_bytes()
  59. .unwrap();
  60. let request = ModuleRequest::new(CreateWorkspace).payload(payload);
  61. DispatchFuture {
  62. fut: Box::pin(async move {
  63. let result = EventDispatch::async_send(request)
  64. .await
  65. .parse::<Workspace, DispatchError>()
  66. .map_err(|e| {
  67. ErrorBuilder::new(UserErrCode::CreateDefaultWorkspaceFailed)
  68. .error(e)
  69. .build()
  70. })?;
  71. let workspace = result.map_err(|e| {
  72. ErrorBuilder::new(UserErrCode::CreateDefaultWorkspaceFailed)
  73. .error(e)
  74. .build()
  75. })?;
  76. Ok(workspace.id)
  77. }),
  78. }
  79. }
  80. }