From fc296356c4e1b269fd55196e72791ea3fbf03b08 Mon Sep 17 00:00:00 2001 From: Santo Cariotti Date: Mon, 17 Oct 2022 22:33:26 +0200 Subject: Undo warning resolve --- src/warning/models.rs | 11 ++++++++--- src/warning/routes.rs | 6 +++++- 2 files changed, 13 insertions(+), 4 deletions(-) (limited to 'src') 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, } /// 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, + 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)) } -- cgit v1.2.3-71-g8e6c