wekan_cli/command_result/
bulk_cards.rs1use 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}