workspace_handler.rs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. use crate::{errors::WorkspaceError, services::WorkspaceController};
  2. use flowy_dispatch::prelude::{data_result, Data, DataResult, Unit};
  3. use flowy_workspace_infra::entities::{app::RepeatedApp, workspace::*};
  4. use std::{convert::TryInto, sync::Arc};
  5. #[tracing::instrument(skip(data, controller), err)]
  6. pub(crate) async fn create_workspace_handler(
  7. data: Data<CreateWorkspaceRequest>,
  8. controller: Unit<Arc<WorkspaceController>>,
  9. ) -> DataResult<Workspace, WorkspaceError> {
  10. let controller = controller.get_ref().clone();
  11. let params: CreateWorkspaceParams = data.into_inner().try_into()?;
  12. let detail = controller.create_workspace_from_params(params).await?;
  13. data_result(detail)
  14. }
  15. #[tracing::instrument(skip(controller), err)]
  16. pub(crate) async fn read_cur_workspace_handler(
  17. controller: Unit<Arc<WorkspaceController>>,
  18. ) -> DataResult<CurrentWorkspaceSetting, WorkspaceError> {
  19. let workspace = controller.read_current_workspace().await?;
  20. data_result(workspace)
  21. }
  22. #[tracing::instrument(skip(controller), err)]
  23. pub(crate) async fn read_workspace_apps_handler(
  24. controller: Unit<Arc<WorkspaceController>>,
  25. ) -> DataResult<RepeatedApp, WorkspaceError> {
  26. let repeated_app = controller.read_current_workspace_apps().await?;
  27. data_result(repeated_app)
  28. }
  29. #[tracing::instrument(skip(data, controller), err)]
  30. pub(crate) async fn read_workspaces_handler(
  31. data: Data<QueryWorkspaceRequest>,
  32. controller: Unit<Arc<WorkspaceController>>,
  33. ) -> DataResult<RepeatedWorkspace, WorkspaceError> {
  34. let params: WorkspaceIdentifier = data.into_inner().try_into()?;
  35. let workspaces = controller.read_workspaces(params).await?;
  36. data_result(workspaces)
  37. }
  38. #[tracing::instrument(skip(data, controller), err)]
  39. pub(crate) async fn open_workspace_handler(
  40. data: Data<QueryWorkspaceRequest>,
  41. controller: Unit<Arc<WorkspaceController>>,
  42. ) -> DataResult<Workspace, WorkspaceError> {
  43. let params: WorkspaceIdentifier = data.into_inner().try_into()?;
  44. let workspaces = controller.open_workspace(params).await?;
  45. data_result(workspaces)
  46. }