meegle/workitem/
types.rs

1use derive_builder::Builder;
2use serde::{Deserialize, Serialize};
3use serde_json::Value;
4
5use crate::structs::{
6    CompInfo, ExPand, FieldConf, FieldValuePair, SearchGroup, SearchUser, WorkItemInfo,
7    WorkItemStatus,
8};
9
10#[derive(Builder, Debug, Default, Serialize)]
11#[builder(setter(into, strip_option))]
12#[builder(default)]
13pub struct FilterWorkItemsInProjectRequest {
14    pub work_item_name: Option<String>,
15    pub user_keys: Option<Vec<String>>,
16    pub work_item_type_keys: Vec<String>,
17    pub work_item_ids: Option<Vec<String>>,
18    pub created_at: Option<i64>,
19    pub updated_at: Option<i64>,
20    pub sub_stages: Option<Vec<String>>,
21    pub work_item_status: Option<Vec<WorkItemStatus>>,
22    pub businesses: Option<Vec<String>>,
23    pub priorities: Option<Vec<String>>,
24    pub tags: Option<Vec<String>>,
25    pub search_id: Option<String>,
26    pub page_size: Option<i64>,
27    pub page_num: Option<i64>,
28    pub expand: Option<ExPand>,
29}
30
31pub type FilterWorkItemsInProjectResponse = Vec<WorkItemInfo>;
32
33#[derive(Builder, Debug, Default, Serialize)]
34#[builder(setter(into, strip_option))]
35#[builder(default)]
36pub struct FilterWorkItemsAcrossProjectsRequest {
37    pub project_keys: Option<Vec<String>>,
38    pub simple_names: Option<Vec<String>>,
39    pub work_item_type_key: String,
40    pub work_item_name: Option<String>,
41    pub search_user: Option<SearchUser>,
42    pub work_item_ids: Option<Vec<String>>,
43    pub created_at: Option<i64>,
44    pub updated_at: Option<i64>,
45    pub work_item_status: Option<Vec<WorkItemStatus>>,
46    pub businesses: Option<Vec<String>>,
47    pub priorities: Option<Vec<String>>,
48    pub tags: Option<Vec<String>>,
49    pub template_ids: Option<Vec<i64>>,
50    pub page_size: Option<i64>,
51    pub page_num: Option<i64>,
52    pub expand: Option<ExPand>,
53}
54
55pub type FilterWorkItemsAcrossProjectsResponse = Vec<WorkItemInfo>;
56
57#[derive(Builder, Debug, Default, Serialize)]
58#[builder(setter(into, strip_option))]
59#[builder(default)]
60pub struct SearchWorkItemsInProjectRequest {
61    pub search_group: SearchGroup,
62    pub page_size: Option<i64>,
63    pub page_num: Option<i64>,
64    pub fields: Option<Vec<String>>,
65    pub expand: Option<ExPand>,
66}
67
68pub type SearchWorkItemsInProjectResponse = Vec<WorkItemInfo>;
69
70#[derive(Builder, Debug, Default, Serialize)]
71#[builder(setter(into, strip_option))]
72#[builder(default)]
73pub struct CompositiveSearchRequest {
74    pub project_keys: Option<Vec<String>>,
75    pub simple_names: Option<Vec<String>>,
76    pub query_type: String,
77    pub query_sub_type: Option<Vec<String>>,
78    pub query: String,
79    pub page_size: Option<i32>,
80    pub page_num: Option<i32>,
81}
82
83pub type CompositiveSearchResponse = Vec<CompInfo>;
84
85#[derive(Builder, Debug, Default, Serialize)]
86#[builder(setter(into, strip_option))]
87#[builder(default)]
88pub struct SearchWorkItemsByRelationRequest {
89    pub relation_work_item_type_key: String,
90    pub relation_key: String,
91    pub relation_type: Option<i32>,
92    pub page_size: Option<i32>,
93    pub page_num: Option<i32>,
94}
95
96pub type SearchWorkItemsByRelationResponse = Vec<WorkItemInfo>;
97
98#[derive(Builder, Debug, Default, Serialize)]
99#[builder(setter(into, strip_option))]
100#[builder(default)]
101pub struct GetWorkItemDetailsRequest {
102    pub work_item_ids: Vec<i64>,
103    pub fields: Option<Vec<String>>,
104    pub expand: Option<ExPand>,
105}
106
107pub type GetWorkItemDetailsResponse = Vec<WorkItemInfo>;
108
109pub type GetWorkItemMetaResponse = Vec<FieldConf>;
110
111#[derive(Builder, Debug, Default, Serialize)]
112#[builder(setter(into, strip_option))]
113#[builder(default)]
114pub struct CreateWorkItemRequest {
115    pub work_item_type_key: String,
116    pub name: Option<String>,
117    pub field_value_pairs: Option<Vec<FieldValuePair>>,
118    pub template_id: Option<i64>,
119}
120
121pub type CreateWorkItemResponse = i64;
122
123#[derive(Builder, Debug, Default, Serialize)]
124#[builder(setter(into, strip_option))]
125#[builder(default)]
126pub struct UpdateWorkItemRequest {
127    pub update_fields: Vec<FieldValuePair>,
128}
129
130pub type UpdateWorkItemResponse = Value;
131
132#[derive(Builder, Debug, Default, Serialize)]
133#[builder(setter(into, strip_option))]
134#[builder(default)]
135pub struct BatchUpdateWorkItemRequest {
136    pub project_key: String,
137    pub work_item_ids: Vec<i64>,
138    pub work_item_type_key: String,
139    pub update_mode: String,
140    pub field_key: String,
141    pub before_field_value: Option<serde_json::Value>,
142    pub after_field_value: serde_json::Value,
143}
144
145#[derive(Debug, Deserialize)]
146pub struct BatchUpdateWorkItemResponse {
147    pub task_id: String,
148}
149
150#[derive(Debug, Deserialize)]
151pub struct TaskResultResponse {
152    pub total: i64,
153    pub success_total: i64,
154    pub error_total: i64,
155    pub success_sub_task_list: Vec<String>,
156    pub fail_sub_task_list: Vec<String>,
157    pub error_scenes: Option<Vec<String>>,
158    pub task_id: String,
159    pub task_status: String,
160}
161
162#[derive(Builder, Debug, Default, Serialize)]
163#[builder(setter(into, strip_option))]
164#[builder(default)]
165pub struct BatchQueryDeliverableRequest {
166    pub project_key: String,
167    pub work_item_ids: Vec<i64>,
168}
169
170pub type BatchQueryDeliverableResponse = Vec<crate::structs::Deliverable>;
171
172#[derive(Builder, Debug, Default, Serialize)]
173#[builder(setter(into, strip_option))]
174#[builder(default)]
175pub struct AbortWorkItemRequest {
176    pub is_aborted: bool,
177    pub reason: String,
178}
179
180pub type AbortWorkItemResponse = Value;
181
182#[derive(Builder, Debug, Default, Serialize)]
183#[builder(setter(into, strip_option))]
184#[builder(default)]
185pub struct FreezeWorkItemRequest {
186    pub project_key: String,
187    pub work_item_id: i64,
188    pub is_frozen: bool,
189}
190
191pub type FreezeWorkItemResponse = Value;
192
193#[derive(Builder, Debug, Default, Serialize)]
194#[builder(setter(into, strip_option))]
195#[builder(default)]
196pub struct GetWorkItemOperationRecordRequest {
197    pub project_key: String,
198    pub work_item_ids: Vec<i64>,
199    pub start_from: Option<String>,
200    pub page_size: Option<i64>,
201    pub operator_type: Option<Vec<String>>,
202    pub operator: Option<Vec<String>>,
203    pub source_type: Option<Vec<String>>,
204    pub source: Option<Vec<String>>,
205    pub operation_type: Option<Vec<String>>,
206    pub start: Option<i64>,
207    pub end: Option<i64>,
208    pub op_record_module: Option<Vec<String>>,
209}
210
211#[derive(Debug, Deserialize)]
212pub struct RecordContent {
213    pub object: Value,
214    pub old: Vec<Value>,
215    pub new: Vec<Value>,
216    pub add: Vec<Value>,
217    pub delete: Vec<Value>,
218}
219
220#[derive(Debug, Deserialize)]
221pub struct OperationRecord {
222    pub project_key: String,
223    pub operation_type: String,
224    pub operator_type: String,
225    pub operator: String,
226    pub op_record_module: String,
227    pub record_contents: Vec<RecordContent>,
228    pub operation_time: i64,
229    pub work_item_id: i64,
230}
231
232#[derive(Debug, Deserialize)]
233pub struct GetWorkItemOperationRecordResponse {
234    pub has_more: bool,
235    pub start_from: String,
236    pub op_records: Vec<OperationRecord>,
237}