meegle/workflow_template/
api.rs1use super::types::*;
2use crate::client::{AuthType, Client};
3use crate::error::ApiResult;
4
5pub trait WorkflowTemplateApi {
6 fn get_workflow_template_list(
9 &self,
10 request: GetWorkflowTemplateListRequest,
11 auth: AuthType,
12 ) -> impl std::future::Future<Output = ApiResult<GetWorkflowTemplateListResponse>> + Send;
13
14 fn get_workflow_template_detail(
17 &self,
18 request: GetWorkflowTemplateDetailRequest,
19 auth: AuthType,
20 ) -> impl std::future::Future<Output = ApiResult<GetWorkflowTemplateDetailResponse>> + Send;
21
22 fn create_workflow_template(
25 &self,
26 request: CreateWorkflowTemplateRequest,
27 auth: AuthType,
28 ) -> impl std::future::Future<Output = ApiResult<CreateWorkflowTemplateResponse>> + Send;
29
30 fn update_workflow_template(
33 &self,
34 request: UpdateWorkflowTemplateRequest,
35 auth: AuthType,
36 ) -> impl std::future::Future<Output = ApiResult<UpdateWorkflowTemplateResponse>> + Send;
37
38 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}