Skip to main content

wekan_cli/command_result/
bulk_cards.rs

1use serde::Serialize;
2
3#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
4pub struct BulkCardCreateItem {
5    pub index: usize,
6    pub card_id: Option<String>,
7    pub error: Option<String>,
8}
9
10#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
11pub struct BulkCardCreateResult {
12    pub board_id: String,
13    pub list_id: String,
14    pub results: Vec<BulkCardCreateItem>,
15}
16
17#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
18pub struct BulkCardDeleteResult {
19    pub board_id: String,
20    pub deleted: Vec<String>,
21    pub not_found: Vec<String>,
22}
23
24#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
25pub struct BulkCardLabelUpdate {
26    pub card_id: String,
27    pub label_ids: Vec<Option<String>>,
28}
29
30#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
31pub struct BulkCardLabelsResult {
32    pub board_id: String,
33    pub updated: Vec<BulkCardLabelUpdate>,
34    pub not_found: Vec<String>,
35}
36
37#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
38#[serde(tag = "operation", content = "data", rename_all = "snake_case")]
39pub enum CardBatchResult {
40    CardBulkCreate(BulkCardCreateResult),
41    CardBulkDelete(BulkCardDeleteResult),
42    CardBulkLabels(BulkCardLabelsResult),
43}
44
45impl CardBatchResult {
46    pub fn incomplete(&self) -> bool {
47        match self {
48            Self::CardBulkCreate(data) => data.results.iter().any(|item| item.error.is_some()),
49            Self::CardBulkDelete(data) => !data.not_found.is_empty(),
50            Self::CardBulkLabels(data) => !data.not_found.is_empty(),
51        }
52    }
53}