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