view_handler.rs 2.7 KB

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