1use super::types::*;
2use crate::client::{AuthType, Client};
3use crate::error::ApiResult;
4
5pub trait ViewApi {
6 fn get_view_list(
9 &self,
10 request: GetViewListRequest,
11 auth: AuthType,
12 ) -> impl std::future::Future<Output = ApiResult<GetViewListResponse>> + Send;
13
14 fn get_fix_view(
17 &self,
18 request: GetFixViewRequest,
19 auth: AuthType,
20 ) -> impl std::future::Future<Output = ApiResult<GetFixViewResponse>> + Send;
21
22 fn get_panoramic_view(
25 &self,
26 request: GetPanoramicViewRequest,
27 auth: AuthType,
28 ) -> impl std::future::Future<Output = ApiResult<GetPanoramicViewResponse>> + Send;
29
30 fn create_fix_view(
33 &self,
34 request: CreateFixViewRequest,
35 auth: AuthType,
36 ) -> impl std::future::Future<Output = ApiResult<CreateFixViewResponse>> + Send;
37
38 fn update_fix_view(
41 &self,
42 request: UpdateFixViewRequest,
43 auth: AuthType,
44 ) -> impl std::future::Future<Output = ApiResult<UpdateFixViewResponse>> + Send;
45
46 fn create_condition_view(
49 &self,
50 request: CreateConditionViewRequest,
51 auth: AuthType,
52 ) -> impl std::future::Future<Output = ApiResult<CreateConditionViewResponse>> + Send;
53
54 fn update_condition_view(
57 &self,
58 request: UpdateConditionViewRequest,
59 auth: AuthType,
60 ) -> impl std::future::Future<Output = ApiResult<UpdateConditionViewResponse>> + Send;
61
62 fn delete_view(
65 &self,
66 request: DeleteViewRequest,
67 auth: AuthType,
68 ) -> impl std::future::Future<Output = ApiResult<DeleteViewResponse>> + Send;
69}
70
71impl ViewApi for Client {
72 async fn get_view_list(
73 &self,
74 request: GetViewListRequest,
75 auth: AuthType,
76 ) -> ApiResult<GetViewListResponse> {
77 Ok(self
78 .post(
79 &format!("{}/view_conf/list", request.project_key),
80 &request,
81 auth,
82 )
83 .await?)
84 }
85
86 async fn get_fix_view(
87 &self,
88 request: GetFixViewRequest,
89 auth: AuthType,
90 ) -> ApiResult<GetFixViewResponse> {
91 let url = format!(
92 "{}/fix_view/{}?page_size={}&page_num={}",
93 request.project_key,
94 request.view_id,
95 request.page_size.unwrap_or(10),
96 request.page_num.unwrap_or(1)
97 );
98 Ok(self.get(&url, auth).await?)
99 }
100
101 async fn get_panoramic_view(
102 &self,
103 request: GetPanoramicViewRequest,
104 auth: AuthType,
105 ) -> ApiResult<GetPanoramicViewResponse> {
106 Ok(self
107 .post(
108 &format!("{}/view/{}", request.project_key, request.view_id),
109 &request,
110 auth,
111 )
112 .await?)
113 }
114
115 async fn create_fix_view(
116 &self,
117 request: CreateFixViewRequest,
118 auth: AuthType,
119 ) -> ApiResult<CreateFixViewResponse> {
120 Ok(self
121 .post(
122 &format!(
123 "{}/{}/fix_view",
124 request.project_key, request.work_item_type_key
125 ),
126 &request,
127 auth,
128 )
129 .await?)
130 }
131
132 async fn update_fix_view(
133 &self,
134 request: UpdateFixViewRequest,
135 auth: AuthType,
136 ) -> ApiResult<UpdateFixViewResponse> {
137 Ok(self
138 .post(
139 &format!(
140 "{}/{}/fix_view/{}",
141 request.project_key, request.work_item_type_key, request.view_id
142 ),
143 &request,
144 auth,
145 )
146 .await?)
147 }
148
149 async fn create_condition_view(
150 &self,
151 request: CreateConditionViewRequest,
152 auth: AuthType,
153 ) -> ApiResult<CreateConditionViewResponse> {
154 Ok(self
155 .post("view/v1/create_condition_view", &request, auth)
156 .await?)
157 }
158
159 async fn update_condition_view(
160 &self,
161 request: UpdateConditionViewRequest,
162 auth: AuthType,
163 ) -> ApiResult<UpdateConditionViewResponse> {
164 Ok(self
165 .post("view/v1/update_condition_view", &request, auth)
166 .await?)
167 }
168
169 async fn delete_view(
170 &self,
171 request: DeleteViewRequest,
172 auth: AuthType,
173 ) -> ApiResult<DeleteViewResponse> {
174 Ok(self
175 .delete(
176 &format!("{}/fix_view/{}", request.project_key, request.view_id),
177 auth,
178 )
179 .await?)
180 }
181}