62 lines
1.9 KiB
Rust
Raw Normal View History

use crate::{
entities::app::{
App,
AppIdentifier,
CreateAppParams,
CreateAppRequest,
DeleteAppParams,
DeleteAppRequest,
QueryAppRequest,
UpdateAppParams,
UpdateAppRequest,
2021-07-20 15:51:49 +08:00
},
errors::WorkspaceError,
services::{AppController, ViewController},
};
2021-07-31 10:50:56 +08:00
use flowy_dispatch::prelude::{data_result, Data, DataResult, Unit};
use std::{convert::TryInto, sync::Arc};
2021-09-05 13:50:23 +08:00
#[tracing::instrument(skip(data, controller), err)]
pub(crate) async fn create_app_handler(
data: Data<CreateAppRequest>,
controller: Unit<Arc<AppController>>,
) -> DataResult<App, WorkspaceError> {
let params: CreateAppParams = data.into_inner().try_into()?;
2021-09-02 19:57:19 +08:00
let detail = controller.create_app(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
2021-09-05 13:50:23 +08:00
#[tracing::instrument(skip(data, controller))]
pub(crate) async fn delete_app_handler(
data: Data<DeleteAppRequest>,
controller: Unit<Arc<AppController>>,
) -> Result<(), WorkspaceError> {
let params: DeleteAppParams = data.into_inner().try_into()?;
let _ = controller.delete_app(&params.app_id).await?;
Ok(())
}
2021-09-05 13:50:23 +08:00
#[tracing::instrument(skip(data, controller))]
pub(crate) async fn update_app_handler(
data: Data<UpdateAppRequest>,
controller: Unit<Arc<AppController>>,
) -> Result<(), WorkspaceError> {
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(
data: Data<QueryAppRequest>,
app_controller: Unit<Arc<AppController>>,
view_controller: Unit<Arc<ViewController>>,
2021-07-31 10:50:56 +08:00
) -> DataResult<App, WorkspaceError> {
let params: AppIdentifier = data.into_inner().try_into()?;
2021-09-02 19:57:19 +08:00
let mut app = app_controller.read_app(params.clone()).await?;
app.belongings = view_controller.read_views_belong_to(&params.app_id).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
}