summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-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))
}