diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/warning/models.rs | 11 | ||||
| -rw-r--r-- | src/warning/routes.rs | 6 |
2 files changed, 13 insertions, 4 deletions
diff --git a/src/warning/models.rs b/src/warning/models.rs index c420dd0..9e79e6c 100644 --- a/src/warning/models.rs +++ b/src/warning/models.rs @@ -59,6 +59,7 @@ pub struct WarningCreate { #[derive(Deserialize)] pub struct WarningEdit { pub admin_note: String, + pub resolved_by: Option<bool>, } /// Payload used for warning filtering @@ -355,8 +356,12 @@ impl Warning { Ok(count) } - /// Edit a warning - pub async fn edit(&mut self, resolver: i32, payload: WarningEdit) -> Result<(), AppError> { + /// Edit a warning. When `resolver` is None, it means a warning is no more resolved + pub async fn edit( + &mut self, + resolver: Option<i32>, + payload: WarningEdit, + ) -> Result<(), AppError> { let pool = unsafe { get_client() }; let now = Local::now().naive_utc(); @@ -374,7 +379,7 @@ impl Warning { .await?; self.admin_note = payload.admin_note; - self.resolved_by = Some(resolver); + self.resolved_by = resolver; self.updated = now; Ok(()) diff --git a/src/warning/routes.rs b/src/warning/routes.rs index 81173e6..e57b8a8 100644 --- a/src/warning/routes.rs +++ b/src/warning/routes.rs @@ -101,7 +101,11 @@ async fn edit_warning( return Err(AppError::Unauthorized); } - warning.edit(user.id, payload).await?; + if payload.resolved_by.is_none() || payload.resolved_by.unwrap() { + warning.edit(Some(user.id), payload).await?; + } else { + warning.edit(None, payload).await?; + } Ok(Json(warning)) } |
