Skip to main content

wekan_cli/command_result/
cards.rs

1use crate::client::metadata::*;
2use serde::Serialize;
3use serde_json::Number;
4
5#[derive(Debug, Eq, PartialEq, Serialize)]
6pub struct BotRunReport {
7    pub run_id: String,
8    pub status: BotRunStatus,
9}
10
11impl From<crate::client::cards::bot_runs::BotRunReport> for BotRunReport {
12    fn from(report: crate::client::cards::bot_runs::BotRunReport) -> Self {
13        Self {
14            run_id: report.run_id,
15            status: report.status.into(),
16        }
17    }
18}
19
20#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize)]
21#[serde(rename_all = "snake_case")]
22pub enum BotRunStatus {
23    Queued,
24    Running,
25    AwaitingInput,
26    Review,
27    Done,
28    Failed,
29    Stopped,
30}
31
32impl From<crate::client::cards::bot_runs::BotRunStatus> for BotRunStatus {
33    fn from(status: crate::client::cards::bot_runs::BotRunStatus) -> Self {
34        use crate::client::cards::bot_runs::BotRunStatus as WireStatus;
35        match status {
36            WireStatus::Queued => Self::Queued,
37            WireStatus::Running => Self::Running,
38            WireStatus::AwaitingInput => Self::AwaitingInput,
39            WireStatus::Review => Self::Review,
40            WireStatus::Done => Self::Done,
41            WireStatus::Failed => Self::Failed,
42            WireStatus::Stopped => Self::Stopped,
43        }
44    }
45}
46
47#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize)]
48#[serde(rename_all = "snake_case")]
49pub enum CardMembershipKind {
50    Member,
51    Assignee,
52}
53
54#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
55pub struct CardMemberCollectionSuccess {
56    pub board_id: String,
57    pub list_id: String,
58    pub card_id: String,
59    pub members: Vec<String>,
60}
61
62#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
63pub struct CardAssigneeCollectionSuccess {
64    pub board_id: String,
65    pub list_id: String,
66    pub card_id: String,
67    pub assignees: Vec<String>,
68}
69
70#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
71pub struct CardMembershipMutationSuccess {
72    pub board_id: String,
73    pub list_id: String,
74    pub card_id: String,
75    pub user_id: String,
76    pub kind: CardMembershipKind,
77    pub action: super::MembershipAction,
78    pub members: Vec<String>,
79    pub assignees: Vec<String>,
80}
81
82#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
83pub struct CardSummary {
84    pub card_id: String,
85    pub title: Option<String>,
86    pub description: Option<String>,
87    pub swimlane_id: Option<String>,
88    pub received_at: Option<String>,
89    pub start_at: Option<String>,
90    pub due_at: Option<String>,
91    pub end_at: Option<String>,
92    pub assignees: Vec<String>,
93    pub sort: Option<Number>,
94}
95
96#[derive(Debug, Eq, PartialEq, Serialize)]
97pub struct CardCollectionSuccess {
98    pub board_id: String,
99    pub list_id: String,
100    pub cards: Vec<CardSummary>,
101}
102
103#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
104#[serde(untagged)]
105pub enum CardDetailCustomFieldValue {
106    String(String),
107    Number(Number),
108    Boolean(bool),
109    Strings(Vec<Option<String>>),
110}
111
112#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
113pub struct CardDetailCustomField {
114    pub custom_field_id: Option<String>,
115    pub value: Option<CardDetailCustomFieldValue>,
116}
117
118#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize)]
119#[serde(rename_all = "lowercase")]
120pub enum CardDetailStickerHighlight {
121    Underline,
122    Round,
123}
124
125#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
126pub struct CardDetailSticker {
127    pub icon: Option<String>,
128    pub name: Option<String>,
129    pub highlight: Option<CardDetailStickerHighlight>,
130    pub position: Option<Number>,
131}
132
133#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
134pub struct CardDetailLocation {
135    pub location_id: String,
136    pub name: Option<String>,
137    pub address: Option<String>,
138    pub latitude: Option<Number>,
139    pub longitude: Option<Number>,
140}
141
142#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
143pub struct CardDetailDependency {
144    pub card_id: String,
145    pub dependency_type: Option<String>,
146    pub color: Option<String>,
147    pub icon: Option<String>,
148}
149
150#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
151pub struct CardDetailVote {
152    pub question: String,
153    pub positive: Vec<String>,
154    pub negative: Vec<String>,
155    pub end: Option<String>,
156    pub public: bool,
157    pub allow_non_board_members: bool,
158}
159
160#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
161pub struct CardDetailPoker {
162    pub question: Option<bool>,
163    pub one: Vec<String>,
164    pub two: Vec<String>,
165    pub three: Vec<String>,
166    pub five: Vec<String>,
167    pub eight: Vec<String>,
168    pub thirteen: Vec<String>,
169    pub twenty: Vec<String>,
170    pub forty: Vec<String>,
171    pub one_hundred: Vec<String>,
172    pub unsure: Vec<String>,
173    pub end: Option<String>,
174    pub allow_non_board_members: Option<bool>,
175    pub estimation: Option<Number>,
176}
177
178#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
179pub struct CardDetail {
180    pub scrum: Option<Box<ScrumCard>>,
181    pub drawings: Option<Vec<CardDrawing>>,
182    pub custom_field_links: Option<Vec<CardCustomFieldLink>>,
183    pub sync_last_source: Option<Box<CardSyncLastSource>>,
184    pub email: Option<Box<CardEmail>>,
185
186    pub scrum_revision: Option<serde_json::Number>,
187    pub parent_ids: Option<Vec<String>>,
188    pub map_x: Option<serde_json::Number>,
189    pub map_y: Option<serde_json::Number>,
190    pub column_set_values: Option<std::collections::BTreeMap<String, String>>,
191    pub card_kind: Option<String>,
192    pub last_recurrence_at: Option<String>,
193    pub sync_source_key: Option<String>,
194    pub sync_label_ids: Option<Vec<String>>,
195    pub sync_issue_state: Option<String>,
196    pub sync_closed_by_we_kan: Option<bool>,
197    pub sync_external_id: Option<String>,
198    pub sync_source_type: Option<String>,
199    pub attached_card_ids: Option<Vec<String>>,
200    pub flow_start_at: Option<String>,
201    pub flow_user_id: Option<String>,
202    pub pomodoro_start_at: Option<String>,
203    pub pomodoro_phase: Option<String>,
204    pub pomodoro_user_id: Option<String>,
205    pub show_list_on_card: Option<bool>,
206    pub checklists: Option<Vec<crate::client::checklists::ChecklistDocument>>,
207    pub list_entered_at: Option<String>,
208    pub recurrence_interval: Option<String>,
209    pub last_move_reason: Option<String>,
210    pub flow_interruptions: Option<Number>,
211    pub pomodoro_count: Option<Number>,
212    pub pomodoro_work_minutes: Option<Number>,
213    pub card_id: String,
214    pub title: Option<String>,
215    pub watchers: Option<Vec<String>>,
216    pub archived: bool,
217    pub archived_at: Option<String>,
218    pub deleted_at: Option<String>,
219    pub deleted_by: Option<String>,
220    pub delete_batch_id: Option<String>,
221    pub parent_id: Option<String>,
222    pub list_id: Option<String>,
223    pub swimlane_id: String,
224    pub board_id: Option<String>,
225    pub cover_id: Option<String>,
226    pub color: Option<String>,
227    pub created_at: String,
228    pub modified_at: String,
229    pub custom_fields: Vec<CardDetailCustomField>,
230    pub date_last_activity: String,
231    pub description: Option<String>,
232    pub requested_by: Option<String>,
233    pub assigned_by: Option<String>,
234    pub label_ids: Vec<Option<String>>,
235    pub members: Vec<String>,
236    pub assignees: Vec<String>,
237    pub requesters: Vec<String>,
238    pub assigners: Vec<String>,
239    pub received_at: Option<String>,
240    pub start_at: Option<String>,
241    pub due_at: Option<String>,
242    pub end_at: Option<String>,
243    pub due_complete: Option<bool>,
244    pub stickers: Vec<CardDetailSticker>,
245    pub location_name: Option<String>,
246    pub location_address: Option<String>,
247    pub location_latitude: Option<Number>,
248    pub location_longitude: Option<Number>,
249    pub locations: Vec<CardDetailLocation>,
250    pub spent_time: Option<Number>,
251    pub is_overtime: Option<bool>,
252    pub user_id: String,
253    pub sort: Option<Number>,
254    pub subtask_sort: Option<Number>,
255    pub card_type: String,
256    pub linked_id: Option<String>,
257    pub card_dependencies: Vec<CardDetailDependency>,
258    pub vote: Option<CardDetailVote>,
259    pub poker: Option<CardDetailPoker>,
260    pub target_id_gantt: Vec<String>,
261    pub link_type_gantt: Vec<Number>,
262    pub link_id_gantt: Vec<String>,
263    pub card_number: Option<Number>,
264    pub show_activities: bool,
265    pub show_list_on_minicard: Option<bool>,
266    pub show_checklist_at_minicard: Option<bool>,
267    pub hide_finished_checklist_if_items_are_hidden: Option<bool>,
268}
269
270#[derive(Debug, Eq, PartialEq, Serialize)]
271pub struct CardCreateSuccess {
272    pub board_id: String,
273    pub list_id: String,
274    pub card_id: String,
275}
276
277#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize)]
278#[serde(rename_all = "snake_case")]
279pub enum CardSubmittedField {
280    Title,
281    Sort,
282    ParentId,
283    Description,
284    Color,
285    LabelIds,
286    RequestedBy,
287    AssignedBy,
288    ReceivedAt,
289    StartAt,
290    DueAt,
291    EndAt,
292    SpentTime,
293    IsOverTime,
294    Members,
295    Assignees,
296    DueComplete,
297    SwimlaneId,
298    ListId,
299    NewBoardId,
300    NewSwimlaneId,
301    NewListId,
302    MoveReason,
303    Archive,
304    Vote,
305    Poker,
306    CustomFields,
307    Stickers,
308    Locations,
309}
310
311#[derive(Debug, Eq, PartialEq, Serialize)]
312pub struct CardUpdateSuccess {
313    pub board_id: String,
314    pub list_id: String,
315    pub card_id: String,
316    pub submitted_fields: Vec<CardSubmittedField>,
317}
318
319#[derive(Debug, Eq, PartialEq, Serialize)]
320pub struct CardArchiveSuccess {
321    pub board_id: String,
322    pub list_id: String,
323    pub card_id: String,
324    pub archived: bool,
325    pub archived_at: String,
326}
327
328#[derive(Debug, Eq, PartialEq, Serialize)]
329pub struct CardRestoreSuccess {
330    pub board_id: String,
331    pub list_id: String,
332    pub card_id: String,
333    pub archived: bool,
334}
335
336#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize)]
337#[serde(rename_all = "snake_case")]
338pub enum CardDeleteMode {
339    Hard,
340}
341
342#[derive(Debug, Eq, PartialEq, Serialize)]
343pub struct CardDeleteSuccess {
344    pub board_id: String,
345    pub list_id: String,
346    pub card_id: String,
347    pub deletion_requested: bool,
348    pub delete_mode: CardDeleteMode,
349}
350
351#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
352pub struct CardCustomFieldSetSuccess {
353    pub board_id: String,
354    pub list_id: String,
355    pub card_id: String,
356    pub custom_field_id: String,
357    pub custom_fields: Vec<CardDetailCustomField>,
358}
359#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
360pub struct CardCustomFieldQuerySuccess {
361    pub board_id: String,
362    pub custom_field_id: String,
363    pub value: String,
364    pub cards: Vec<CardDetail>,
365}
366
367#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
368pub struct CardLabelCollection {
369    pub board_id: String,
370    pub list_id: String,
371    pub card_id: String,
372    pub label_ids: Vec<Option<String>>,
373}
374
375#[derive(Debug, Eq, PartialEq, Serialize)]
376pub struct CardCopySuccess {
377    pub source_board_id: String,
378    pub source_list_id: String,
379    pub source_card_id: String,
380    pub target_board_id: String,
381    pub target_list_id: String,
382    pub target_swimlane_id: String,
383    pub card_id: String,
384}
385#[derive(Debug, Eq, PartialEq, Serialize)]
386pub struct CardCountSuccess {
387    pub board_id: String,
388    pub list_id: Option<String>,
389    pub count: u64,
390}
391#[derive(Debug, Eq, PartialEq, Serialize)]
392pub struct SwimlaneCardCollectionSuccess {
393    pub board_id: String,
394    pub swimlane_id: String,
395    pub cards: Vec<SwimlaneCardSummary>,
396}
397
398#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
399pub struct SwimlaneCardSummary {
400    pub card_id: String,
401    pub title: Option<String>,
402    pub description: Option<String>,
403    pub list_id: Option<String>,
404    pub received_at: Option<String>,
405    pub start_at: Option<String>,
406    pub due_at: Option<String>,
407    pub end_at: Option<String>,
408    pub assignees: Option<Vec<Option<String>>>,
409    pub sort: Option<Number>,
410}