view_handler.rs 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. use crate::{
  2. entities::view::{
  3. ApplyChangesetRequest,
  4. CreateViewParams,
  5. CreateViewRequest,
  6. DeleteViewParams,
  7. DeleteViewRequest,
  8. OpenViewRequest,
  9. QueryViewParams,
  10. QueryViewRequest,
  11. UpdateViewParams,
  12. UpdateViewRequest,
  13. View,
  14. },
  15. errors::WorkspaceError,
  16. services::ViewController,
  17. };
  18. use flowy_dispatch::prelude::{data_result, Data, DataResult, Unit};
  19. use flowy_document::entities::doc::{ApplyChangesetParams, Doc, QueryDocParams};
  20. use std::{convert::TryInto, sync::Arc};
  21. #[tracing::instrument(skip(data, controller), err)]
  22. pub(crate) async fn create_view_handler(
  23. data: Data<CreateViewRequest>,
  24. controller: Unit<Arc<ViewController>>,
  25. ) -> DataResult<View, WorkspaceError> {
  26. let params: CreateViewParams = data.into_inner().try_into()?;
  27. let view = controller.create_view(params).await?;
  28. data_result(view)
  29. }
  30. #[tracing::instrument(skip(data, controller), err)]
  31. pub(crate) async fn read_view_handler(
  32. data: Data<QueryViewRequest>,
  33. controller: Unit<Arc<ViewController>>,
  34. ) -> DataResult<View, WorkspaceError> {
  35. let params: QueryViewParams = data.into_inner().try_into()?;
  36. let mut view = controller.read_view(params.clone()).await?;
  37. if params.read_belongings {
  38. view.belongings = controller.read_views_belong_to(&params.view_id).await?;
  39. }
  40. data_result(view)
  41. }
  42. #[tracing::instrument(skip(data, controller), err)]
  43. pub(crate) async fn update_view_handler(
  44. data: Data<UpdateViewRequest>,
  45. controller: Unit<Arc<ViewController>>,
  46. ) -> Result<(), WorkspaceError> {
  47. let params: UpdateViewParams = data.into_inner().try_into()?;
  48. let _ = controller.update_view(params).await?;
  49. Ok(())
  50. }
  51. #[tracing::instrument(skip(data, controller), err)]
  52. pub(crate) async fn apply_changeset_handler(
  53. data: Data<ApplyChangesetRequest>,
  54. controller: Unit<Arc<ViewController>>,
  55. ) -> DataResult<Doc, WorkspaceError> {
  56. let params: ApplyChangesetParams = data.into_inner().try_into()?;
  57. let doc = controller.apply_changeset(params).await?;
  58. data_result(doc)
  59. }
  60. #[tracing::instrument(skip(data, controller), err)]
  61. pub(crate) async fn delete_view_handler(
  62. data: Data<DeleteViewRequest>,
  63. controller: Unit<Arc<ViewController>>,
  64. ) -> Result<(), WorkspaceError> {
  65. let params: DeleteViewParams = data.into_inner().try_into()?;
  66. let _ = controller.delete_view(params).await?;
  67. Ok(())
  68. }
  69. #[tracing::instrument(skip(data, controller), err)]
  70. pub(crate) async fn open_view_handler(
  71. data: Data<OpenViewRequest>,
  72. controller: Unit<Arc<ViewController>>,
  73. ) -> DataResult<Doc, WorkspaceError> {
  74. let params: QueryDocParams = data.into_inner().try_into()?;
  75. let doc = controller.open_view(params).await?;
  76. data_result(doc)
  77. }