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.rs34
1 files changed, 34 insertions, 0 deletions
diff --git a/server/src/api_model.rs b/server/src/api_model.rs
index 3e94d6c..2dc20f1 100644
--- a/server/src/api_model.rs
+++ b/server/src/api_model.rs
@@ -9,6 +9,40 @@ pub enum ReviewState {
Closed,
}
+impl TryFrom<u8> for ReviewState {
+ type Error = &'static str;
+
+ fn try_from(value: u8) -> Result<Self, Self::Error> {
+ match value {
+ 0 => Ok(ReviewState::Draft),
+ 1 => Ok(ReviewState::Open),
+ 2 => Ok(ReviewState::Dropped),
+ 3 => Ok(ReviewState::Closed),
+ _ => Err("Invalid review state"),
+ }
+ }
+}
+
+#[derive(Copy, Clone, Deserialize, Serialize, ToSchema)]
+pub enum Rewrite {
+ Disabled,
+ History,
+ Rebase,
+}
+
+impl TryFrom<u8> for Rewrite {
+ type Error = &'static str;
+
+ fn try_from(value: u8) -> Result<Self, Self::Error> {
+ match value {
+ 0 => Ok(Rewrite::Disabled),
+ 1 => Ok(Rewrite::History),
+ 2 => Ok(Rewrite::Rebase),
+ _ => Err("Invalid review state"),
+ }
+ }
+}
+
#[derive(Copy, Clone, Debug, Deserialize, PartialEq, Serialize, ToSchema)]
pub enum UserReviewRole {
Reviewer,