trello-to-deck/src/nextcloud/model.rs

177 lines
3.6 KiB
Rust
Raw Normal View History

//
use derive_more::derive::Display;
use serde::{Deserialize, Serialize};
use crate::newtype;
newtype!(
NextcloudHostname,
String,
Display,
PartialOrd,
Ord,
"Hostname of the Nextcloud server"
);
newtype!(
NextcloudUsername,
String,
Display,
PartialOrd,
Ord,
"Username to authenticate as"
);
newtype!(
NextcloudPassword,
String,
PartialOrd,
Ord,
"Password to authenticate with"
);
newtype!(
NextcloudBoardId,
i64,
Copy,
Display,
PartialOrd,
Ord,
"ID of a Nextcloud Board"
);
newtype!(
NextcloudStackId,
i64,
Copy,
Display,
PartialOrd,
Ord,
"ID of a Nextcloud Stack"
);
newtype!(
NextcloudCardId,
i64,
Copy,
Display,
PartialOrd,
Ord,
"ID of a Nextcloud Card"
);
newtype!(
NextcloudLabelId,
i64,
Copy,
Display,
PartialOrd,
Ord,
"ID of a Nextcloud Label"
);
newtype!(
NextcloudOrder,
i64,
Copy,
Display,
PartialOrd,
Ord,
"Relative position of the item amongst its peers"
);
newtype!(
NextcloudETag,
String,
PartialOrd,
Ord,
"ETag for a resource"
);
newtype!(
NextcloudBoardTitle,
String,
Display,
PartialOrd,
Ord,
"Title of the Board"
);
newtype!(
NextcloudBoardColour,
String,
PartialOrd,
Ord,
"Colour of the Board"
);
newtype!(
NextcloudStackTitle,
String,
Display,
PartialOrd,
Ord,
"Title of the Stack"
);
newtype!(
NextcloudCardTitle,
String,
Display,
PartialOrd,
Ord,
"Title of the Card"
);
2024-11-29 14:31:40 +00:00
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord)]
pub(crate) struct NextcloudBoardOwner {
#[serde(rename = "primaryKey")]
pub(crate) primary_key: String,
pub(crate) uid: String,
#[serde(rename = "displayname")]
pub(crate) display_name: String,
}
2024-11-29 14:31:40 +00:00
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord)]
pub(crate) struct Board {
pub(crate) id: NextcloudBoardId,
pub(crate) title: NextcloudBoardTitle,
pub(crate) owner: NextcloudBoardOwner,
pub(crate) color: NextcloudBoardColour,
pub(crate) archived: bool,
pub(crate) labels: Vec<Label>,
pub(crate) acl: Vec<Acl>,
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord)]
pub(crate) struct Stack {
pub(crate) id: NextcloudStackId,
pub(crate) title: NextcloudStackTitle,
pub(crate) order: NextcloudOrder,
#[serde(rename = "boardId")]
pub(crate) board_id: NextcloudBoardId,
#[serde(rename = "ETag")]
pub(crate) etag: NextcloudETag,
#[serde(default)]
pub(crate) cards: Vec<Card>,
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord)]
pub(crate) struct Card {
pub(crate) id: NextcloudCardId,
pub(crate) title: NextcloudCardTitle,
pub(crate) description: Option<String>,
#[serde(rename = "stackId")]
pub(crate) stack_id: NextcloudStackId,
pub(crate) order: NextcloudOrder,
pub(crate) archived: bool,
#[serde(default)]
pub(crate) due_date: Option<String>,
#[serde(default)]
pub(crate) labels: Option<Vec<Label>>,
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord)]
pub(crate) struct Label {
pub(crate) id: NextcloudLabelId,
pub(crate) title: String,
pub(crate) color: String,
}
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq, PartialOrd, Ord)]
pub(crate) struct Acl {
pub(crate) participant: String,
pub(crate) permission_edit: bool,
pub(crate) permission_share: bool,
pub(crate) permission_manage: bool,
}