meegle/workflow_template/
api.rs

1use super::types::*;
2use crate::client::{AuthType, Client};
3use crate::error::ApiResult;
4
5pub trait WorkflowTemplateApi {
6    /// 获取工作项下的流程模板列表
7    /// 该接口用于获取指定工作项类型下所有"流程模板"列表
8    fn get_workflow_template_list(
9        &self,
10        request: GetWorkflowTemplateListRequest,
11        auth: AuthType,
12    ) -> impl std::future::Future<Output = ApiResult<GetWorkflowTemplateListResponse>> + Send;
13
14    /// 获取流程模板配置详情
15    /// 该接口用于获取指定流程模板的配置信息详情
16    fn get_workflow_template_detail(
17        &self,
18        request: GetWorkflowTemplateDetailRequest,
19        auth: AuthType,
20    ) -> impl std::future::Future<Output = ApiResult<GetWorkflowTemplateDetailResponse>> + Send;
21
22    /// 创建流程模板
23    /// 该接口用于在指定工作项类型下创建一个新的"流程模板"
24    fn create_workflow_template(
25        &self,
26        request: CreateWorkflowTemplateRequest,
27        auth: AuthType,
28    ) -> impl std::future::Future<Output = ApiResult<CreateWorkflowTemplateResponse>> + Send;
29
30    /// 更新流程模板
31    /// 该接口用于更新指定流程模板的配置信息
32    fn update_workflow_template(
33        &self,
34        request: UpdateWorkflowTemplateRequest,
35        auth: AuthType,
36    ) -> impl std::future::Future<Output = ApiResult<UpdateWorkflowTemplateResponse>> + Send;
37
38    /// 删除流程模板
39    /// 该接口用于删除指定的流程模板
40    fn delete_workflow_template(
41        &self,
42        request: DeleteWorkflowTemplateRequest,
43        auth: AuthType,
44    ) -> impl std::future::Future<Output = ApiResult<DeleteWorkflowTemplateResponse>> + Send;
45}
46
47impl WorkflowTemplateApi for Client {
48    async fn get_workflow_template_list(
49        &self,
50        request: GetWorkflowTemplateListRequest,
51        auth: AuthType,
52    ) -> ApiResult<GetWorkflowTemplateListResponse> {
53        Ok(self
54            .get(
55                &format!(
56                    "{}/template_list/{}",
57                    request.project_key, request.work_item_type_key
58                ),
59                auth,
60            )
61            .await?)
62    }
63
64    async fn get_workflow_template_detail(
65        &self,
66        request: GetWorkflowTemplateDetailRequest,
67        auth: AuthType,
68    ) -> ApiResult<GetWorkflowTemplateDetailResponse> {
69        Ok(self
70            .get(
71                &format!(
72                    "{}/template_detail/{}",
73                    request.project_key, request.template_id
74                ),
75                auth,
76            )
77            .await?)
78    }
79
80    async fn create_workflow_template(
81        &self,
82        request: CreateWorkflowTemplateRequest,
83        auth: AuthType,
84    ) -> ApiResult<CreateWorkflowTemplateResponse> {
85        Ok(self
86            .post("/template/v2/create_template", &request, auth)
87            .await?)
88    }
89
90    async fn update_workflow_template(
91        &self,
92        request: UpdateWorkflowTemplateRequest,
93        auth: AuthType,
94    ) -> ApiResult<UpdateWorkflowTemplateResponse> {
95        Ok(self
96            .put("/template/v2/update_template", &request, auth)
97            .await?)
98    }
99
100    async fn delete_workflow_template(
101        &self,
102        request: DeleteWorkflowTemplateRequest,
103        auth: AuthType,
104    ) -> ApiResult<DeleteWorkflowTemplateResponse> {
105        Ok(self
106            .delete(
107                &format!(
108                    "/template/v2/delete_template/{}/{}",
109                    request.project_key, request.template_id
110                ),
111                auth,
112            )
113            .await?)
114    }
115}