summaryrefslogtreecommitdiff
path: root/src/types.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/types.rs')
-rw-r--r--src/types.rs72
1 files changed, 72 insertions, 0 deletions
diff --git a/src/types.rs b/src/types.rs
new file mode 100644
index 0000000..a960647
--- /dev/null
+++ b/src/types.rs
@@ -0,0 +1,72 @@
+#![allow(non_camel_case_types)]
+
+use std::collections::BTreeMap;
+
+use serde::{Deserialize, Serialize};
+
+pub type DateTime = chrono::DateTime<chrono::Utc>;
+#[allow(clippy::upper_case_acronyms)]
+pub type HTML = String;
+#[allow(clippy::upper_case_acronyms)]
+pub type URI = String;
+
+pub const STATE_VERSION: u32 = 1;
+
+#[derive(Default, Debug, Serialize, Deserialize)]
+#[serde(deny_unknown_fields)]
+pub struct State {
+ pub version: u32,
+ pub owner: String,
+ pub repo: String,
+ pub label: String,
+ pub issues_updated: Option<DateTime>,
+ pub issues: BTreeMap<String, Issue>,
+ pub issue_history: Vec<(DateTime, String, IssueAction)>,
+ pub pull_requests_updated: Option<DateTime>,
+ pub pull_requests: BTreeMap<String, PullRequest>,
+ pub pull_history: Vec<(DateTime, String, PullAction)>,
+}
+
+#[derive(Debug, Serialize, Deserialize)]
+#[serde(deny_unknown_fields)]
+pub struct Issue {
+ #[serde(skip)]
+ pub id: String,
+ pub title: String,
+ pub is_open: bool,
+ pub body: String,
+ pub last_update: DateTime,
+ pub url: String,
+}
+
+#[derive(Debug, PartialEq, Eq, Clone, Copy, Serialize, Deserialize)]
+#[serde(deny_unknown_fields)]
+pub enum IssueAction {
+ New,
+ Closed,
+ NewClosed,
+}
+
+#[derive(Debug, Serialize, Deserialize)]
+#[serde(deny_unknown_fields)]
+pub struct PullRequest {
+ #[serde(skip)]
+ pub id: String,
+ pub title: String,
+ pub is_open: bool,
+ pub is_merged: bool,
+ pub body: String,
+ pub last_update: DateTime,
+ pub url: String,
+ pub base_ref: String,
+}
+
+#[derive(Debug, PartialEq, Eq, Clone, Copy, Serialize, Deserialize)]
+#[serde(deny_unknown_fields)]
+pub enum PullAction {
+ New,
+ Closed,
+ NewClosed,
+ Merged,
+ NewMerged,
+}