69 lines
2.1 KiB
Rust
Raw Normal View History

use crate::{
2021-07-20 15:51:49 +08:00
entities::{
app::{
App,
CreateAppParams,
CreateAppRequest,
DeleteAppParams,
DeleteAppRequest,
QueryAppParams,
QueryAppRequest,
UpdateAppParams,
UpdateAppRequest,
},
2021-07-20 15:51:49 +08:00
view::RepeatedView,
},
errors::WorkspaceError,
services::{AppController, ViewController},
};
2021-07-23 14:54:31 +08:00
use flowy_dispatch::prelude::{response_ok, Data, ResponseResult, Unit};
use std::{convert::TryInto, sync::Arc};
2021-07-21 22:41:44 +08:00
#[tracing::instrument(name = "create_app", skip(data, controller))]
pub async fn create_app(
data: Data<CreateAppRequest>,
2021-07-23 14:54:31 +08:00
controller: Unit<Arc<AppController>>,
2021-07-19 22:44:37 +08:00
) -> ResponseResult<App, WorkspaceError> {
let params: CreateAppParams = data.into_inner().try_into()?;
let detail = controller.create_app(params)?;
response_ok(detail)
}
2021-07-20 15:51:49 +08:00
#[tracing::instrument(name = "delete_app", skip(data, controller))]
pub async fn delete_app(
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(())
}
#[tracing::instrument(name = "update_app", skip(data, controller))]
pub async fn update_app(
data: Data<UpdateAppRequest>,
2021-07-23 14:54:31 +08:00
controller: Unit<Arc<AppController>>,
) -> Result<(), WorkspaceError> {
let params: UpdateAppParams = data.into_inner().try_into()?;
let _ = controller.update_app(params).await?;
Ok(())
}
#[tracing::instrument(name = "read_app", skip(data, app_controller, view_controller))]
pub async fn read_app(
data: Data<QueryAppRequest>,
app_controller: Unit<Arc<AppController>>,
view_controller: Unit<Arc<ViewController>>,
2021-07-20 15:51:49 +08:00
) -> ResponseResult<App, WorkspaceError> {
let params: QueryAppParams = data.into_inner().try_into()?;
let mut app = app_controller
.read_app(&params.app_id, params.is_trash)
.await?;
2021-07-20 15:51:49 +08:00
if params.read_views {
let views = view_controller.read_views_belong_to(&params.app_id).await?;
2021-07-20 15:51:49 +08:00
app.views = RepeatedView { items: views };
}
response_ok(app)
}