meegle/workitem_type/
api.rs

1use super::types::*;
2use crate::client::{AuthType, Client};
3use crate::error::ApiResult;
4
5pub trait WorkItemTypeApi {
6    /// 获取空间下工作项类型
7    /// 该接口用于获取空间下所有的工作项类型的对接标识(获取后续接口的work_item_type_key参数)
8    fn get_work_item_types(
9        &self,
10        request: GetWorkItemTypesRequest,
11        auth: AuthType,
12    ) -> impl std::future::Future<Output = ApiResult<GetWorkItemTypesResponse>> + Send;
13
14    /// 获取工作项基础信息配置
15    /// 该接口用于获取指定工作项类型的基础信息配置
16    fn get_work_item_type_config(
17        &self,
18        request: GetWorkItemTypeConfigRequest,
19        auth: AuthType,
20    ) -> impl std::future::Future<Output = ApiResult<GetWorkItemTypeConfigResponse>> + Send;
21
22    /// 更新工作项基础信息配置
23    /// 该接口用于更新指定工作项类型的基础信息配置
24    fn update_work_item_type_config(
25        &self,
26        request: UpdateWorkItemTypeConfigRequest,
27        auth: AuthType,
28    ) -> impl std::future::Future<Output = ApiResult<UpdateWorkItemTypeConfigResponse>> + Send;
29}
30
31impl WorkItemTypeApi for Client {
32    async fn get_work_item_types(
33        &self,
34        request: GetWorkItemTypesRequest,
35        auth: AuthType,
36    ) -> ApiResult<GetWorkItemTypesResponse> {
37        Ok(self
38            .get(&format!("{}/work_item/all-types", request.project_key), auth)
39            .await?)
40    }
41
42    async fn get_work_item_type_config(
43        &self,
44        request: GetWorkItemTypeConfigRequest,
45        auth: AuthType,
46    ) -> ApiResult<GetWorkItemTypeConfigResponse> {
47        Ok(self
48            .get(
49                &format!(
50                    "{}/work_item/type/{}",
51                    request.project_key, request.work_item_type_key
52                ),
53                auth,
54            )
55            .await?)
56    }
57
58    async fn update_work_item_type_config(
59        &self,
60        request: UpdateWorkItemTypeConfigRequest,
61        auth: AuthType,
62    ) -> ApiResult<UpdateWorkItemTypeConfigResponse> {
63        Ok(self
64            .put(
65                &format!(
66                    "{}/work_item/type/{}",
67                    request.project_key, request.work_item_type_key
68                ),
69                &request,
70                auth,
71            )
72            .await?)
73    }
74}