summaryrefslogtreecommitdiffstats
path: root/src/warning
diff options
context:
space:
mode:
authorSanto Cariotti <santo@dcariotti.me>2022-10-17 20:33:26 +0000
committerSanto Cariotti <santo@dcariotti.me>2022-10-17 20:33:26 +0000
commitfc296356c4e1b269fd55196e72791ea3fbf03b08 (patch)
tree14555014d9297eb6716801bd40acf5c65aa72e79 /src/warning
parent74976dab57887a4d7e29b426cdf7422722fa58ee (diff)
Undo warning resolve
Diffstat (limited to 'src/warning')
-rw-r--r--src/warning/models.rs11
-rw-r--r--src/warning/routes.rs6
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))
}