summaryrefslogtreecommitdiff
path: root/server/src/api_model.rs
diff options
context:
space:
mode:
Diffstat (limited to 'server/src/api_model.rs')
-rw-r--r--server/src/api_model.rs46
1 files changed, 46 insertions, 0 deletions
diff --git a/server/src/api_model.rs b/server/src/api_model.rs
new file mode 100644
index 0000000..4b6eced
--- /dev/null
+++ b/server/src/api_model.rs
@@ -0,0 +1,46 @@
+use serde::{Serialize};
+
+#[derive(Serialize, Copy, Clone)]
+pub enum ReviewState {
+ DRAFT,
+ OPEN,
+ DROPPED,
+ CLOSED,
+}
+
+#[derive(Serialize)]
+pub struct User<'r> {
+ pub username: &'r str,
+ pub name: &'r str,
+ pub active: bool,
+}
+
+#[derive(Serialize)]
+pub struct Review<'r> {
+ pub id: u64,
+ pub title: &'r str,
+ pub description: &'r str,
+ pub owner: &'r User<'r>,
+ pub reviewers: Vec<&'r User<'r>>,
+ pub watchers: Vec<&'r User<'r>>,
+ pub state: ReviewState,
+ pub progress: f64,
+}
+
+#[derive(Serialize)]
+pub struct ReviewEntry<'r> {
+ pub id: u64,
+ pub title: &'r str,
+ pub owner: &'r User<'r>,
+ pub state: ReviewState,
+ pub progress: f64,
+}
+
+#[derive(Serialize)]
+pub struct Reviews<'r> {
+ pub offset: u32,
+ pub limit: u32,
+ pub total_count: u32,
+ pub more: bool,
+ pub reviews: Vec<ReviewEntry<'r>>,
+}