61 lines
1.9 KiB
Rust
Raw Normal View History

use crate::{
2021-10-30 17:19:50 +08:00
entities::{
2022-02-24 21:49:18 +08:00
app::{App, AppId, CreateAppParams, CreateAppPayload, UpdateAppParams, UpdateAppPayload},
2021-10-30 17:19:50 +08:00
trash::Trash,
2021-07-20 15:51:49 +08:00
},
2021-12-14 18:04:51 +08:00
errors::FlowyError,
2021-12-06 15:49:21 +08:00
services::{AppController, TrashController, ViewController},
};
use lib_dispatch::prelude::{data_result, Data, DataResult, Unit};
use std::{convert::TryInto, sync::Arc};
2021-09-05 13:50:23 +08:00
pub(crate) async fn create_app_handler(
2022-02-24 21:49:18 +08:00
data: Data<CreateAppPayload>,
2021-09-05 13:50:23 +08:00
controller: Unit<Arc<AppController>>,
2021-12-14 18:04:51 +08:00
) -> DataResult<App, FlowyError> {
let params: CreateAppParams = data.into_inner().try_into()?;
2021-11-08 19:19:02 +08:00
let detail = controller.create_app_from_params(params).await?;
2021-09-05 13:50:23 +08:00
2021-07-31 10:50:56 +08:00
data_result(detail)
}
2021-07-20 15:51:49 +08:00
pub(crate) async fn delete_app_handler(
2022-02-24 21:49:18 +08:00
data: Data<AppId>,
2022-01-14 09:09:25 +08:00
app_controller: Unit<Arc<AppController>>,
2021-12-29 00:34:00 +08:00
trash_controller: Unit<Arc<TrashController>>,
2021-12-14 18:04:51 +08:00
) -> Result<(), FlowyError> {
2022-02-24 21:49:18 +08:00
let params: AppId = data.into_inner();
2022-01-14 09:09:25 +08:00
let trash = app_controller
2022-02-24 21:49:18 +08:00
.read_local_apps(vec![params.value])
2022-01-20 23:51:11 +08:00
.await?
2021-10-30 17:19:50 +08:00
.into_iter()
2022-01-14 09:09:25 +08:00
.map(|app| app.into())
2021-10-30 17:19:50 +08:00
.collect::<Vec<Trash>>();
2021-12-29 00:34:00 +08:00
let _ = trash_controller.add(trash).await?;
Ok(())
}
2021-09-05 13:50:23 +08:00
#[tracing::instrument(skip(data, controller))]
pub(crate) async fn update_app_handler(
2022-02-24 21:49:18 +08:00
data: Data<UpdateAppPayload>,
controller: Unit<Arc<AppController>>,
2021-12-14 18:04:51 +08:00
) -> Result<(), FlowyError> {
let params: UpdateAppParams = data.into_inner().try_into()?;
let _ = controller.update_app(params).await?;
Ok(())
}
2021-09-05 13:50:23 +08:00
#[tracing::instrument(skip(data, app_controller, view_controller))]
pub(crate) async fn read_app_handler(
2022-02-24 21:49:18 +08:00
data: Data<AppId>,
app_controller: Unit<Arc<AppController>>,
view_controller: Unit<Arc<ViewController>>,
2021-12-14 18:04:51 +08:00
) -> DataResult<App, FlowyError> {
2022-02-24 21:49:18 +08:00
let params: AppId = data.into_inner();
2021-09-02 19:57:19 +08:00
let mut app = app_controller.read_app(params.clone()).await?;
2022-02-24 21:49:18 +08:00
app.belongings = view_controller.read_views_belong_to(&params.value).await?;
2021-07-20 15:51:49 +08:00
2021-07-31 10:50:56 +08:00
data_result(app)
2021-07-20 15:51:49 +08:00
}