event_handler.rs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. use crate::{
  2. entities::app::{AppIdPB, AppPB, CreateAppParams, CreateAppPayloadPB, UpdateAppParams, UpdateAppPayloadPB},
  3. errors::FlowyError,
  4. services::{AppController, TrashController, ViewController},
  5. };
  6. use flowy_folder_data_model::revision::TrashRevision;
  7. use lib_dispatch::prelude::{data_result, AppData, Data, DataResult};
  8. use std::{convert::TryInto, sync::Arc};
  9. pub(crate) async fn create_app_handler(
  10. data: Data<CreateAppPayloadPB>,
  11. controller: AppData<Arc<AppController>>,
  12. ) -> DataResult<AppPB, FlowyError> {
  13. let params: CreateAppParams = data.into_inner().try_into()?;
  14. let detail = controller.create_app_from_params(params).await?;
  15. data_result(detail)
  16. }
  17. pub(crate) async fn delete_app_handler(
  18. data: Data<AppIdPB>,
  19. app_controller: AppData<Arc<AppController>>,
  20. trash_controller: AppData<Arc<TrashController>>,
  21. ) -> Result<(), FlowyError> {
  22. let params: AppIdPB = data.into_inner();
  23. let trash = app_controller
  24. .read_local_apps(vec![params.value])
  25. .await?
  26. .into_iter()
  27. .map(|app_rev| app_rev.into())
  28. .collect::<Vec<TrashRevision>>();
  29. let _ = trash_controller.add(trash).await?;
  30. Ok(())
  31. }
  32. #[tracing::instrument(level = "debug", skip(data, controller))]
  33. pub(crate) async fn update_app_handler(
  34. data: Data<UpdateAppPayloadPB>,
  35. controller: AppData<Arc<AppController>>,
  36. ) -> Result<(), FlowyError> {
  37. let params: UpdateAppParams = data.into_inner().try_into()?;
  38. let _ = controller.update_app(params).await?;
  39. Ok(())
  40. }
  41. #[tracing::instrument(level = "trace", skip(data, app_controller, view_controller))]
  42. pub(crate) async fn read_app_handler(
  43. data: Data<AppIdPB>,
  44. app_controller: AppData<Arc<AppController>>,
  45. view_controller: AppData<Arc<ViewController>>,
  46. ) -> DataResult<AppPB, FlowyError> {
  47. let params: AppIdPB = data.into_inner();
  48. let mut app_rev = app_controller.read_app(params.clone()).await?;
  49. app_rev.belongings = view_controller.read_views_belong_to(&params.value).await?;
  50. data_result(app_rev.into())
  51. }