meegle/workitem_relation/
api.rs

1use super::types::*;
2use crate::client::{AuthType, Client};
3use crate::error::ApiResult;
4
5pub trait WorkItemRelationApi {
6    /// 获取工作项关系列表
7    /// 该接口用于获取指定空间下的"工作项关联关系"列表,对应的平台功能介绍详见关系管理。
8    fn get_work_item_relation_list(
9        &self,
10        request: GetWorkItemRelationListRequest,
11        auth: AuthType,
12    ) -> impl std::future::Future<Output = ApiResult<GetWorkItemRelationListResponse>> + Send;
13
14    /// 创建工作项关联关系
15    /// 该接口用于在指定空间下新增一个"工作项关联关系",对应的平台功能介绍详见关系管理。
16    fn create_work_item_relation(
17        &self,
18        request: CreateWorkItemRelationRequest,
19        auth: AuthType,
20    ) -> impl std::future::Future<Output = ApiResult<WorkItemRelationResponse>> + Send;
21
22    /// 更新工作项关系
23    /// 该接口用于更新指定工作项关系的配置信息,对应的平台功能介绍详见关系管理。
24    fn update_work_item_relation(
25        &self,
26        request: UpdateWorkItemRelationRequest,
27        auth: AuthType,
28    ) -> impl std::future::Future<Output = ApiResult<WorkItemRelationResponse>> + Send;
29
30    /// 删除工作项关联关系
31    /// 该接口用于删除指定空间下的"工作项关联关系",对应的平台功能介绍详见关系管理。
32    fn delete_work_item_relation(
33        &self,
34        request: DeleteWorkItemRelationRequest,
35        auth: AuthType,
36    ) -> impl std::future::Future<Output = ApiResult<WorkItemRelationResponse>> + Send;
37}
38
39impl WorkItemRelationApi for Client {
40    async fn get_work_item_relation_list(
41        &self,
42        request: GetWorkItemRelationListRequest,
43        auth: AuthType,
44    ) -> ApiResult<GetWorkItemRelationListResponse> {
45        Ok(self
46            .get(&format!("{}/work_item/relation", request.project_key), auth)
47            .await?)
48    }
49
50    async fn create_work_item_relation(
51        &self,
52        request: CreateWorkItemRelationRequest,
53        auth: AuthType,
54    ) -> ApiResult<WorkItemRelationResponse> {
55        Ok(self
56            .post("/work_item/relation/create", &request, auth)
57            .await?)
58    }
59
60    async fn update_work_item_relation(
61        &self,
62        request: UpdateWorkItemRelationRequest,
63        auth: AuthType,
64    ) -> ApiResult<WorkItemRelationResponse> {
65        Ok(self
66            .post("/work_item/relation/update", &request, auth)
67            .await?)
68    }
69
70    async fn delete_work_item_relation(
71        &self,
72        request: DeleteWorkItemRelationRequest,
73        auth: AuthType,
74    ) -> ApiResult<WorkItemRelationResponse> {
75        Ok(self
76            .delete_with_body("/work_item/relation/delete", &request, auth)
77            .await?)
78    }
79}