From 82ed74429c0f1af302318289dda99fb0e2e1faa9 Mon Sep 17 00:00:00 2001 From: mbecker20 Date: Sun, 6 Aug 2023 01:49:12 -0400 Subject: [PATCH] fix delete resource also remove from user recently viewed --- bin/core/src/helpers/mod.rs | 22 ++++++++++++++++++++++ bin/core/src/requests/write/alerter.rs | 10 ++++------ bin/core/src/requests/write/build.rs | 2 ++ bin/core/src/requests/write/builder.rs | 4 +++- bin/core/src/requests/write/deployment.rs | 2 ++ bin/core/src/requests/write/repo.rs | 2 ++ bin/core/src/requests/write/server.rs | 2 ++ 7 files changed, 37 insertions(+), 7 deletions(-) diff --git a/bin/core/src/helpers/mod.rs b/bin/core/src/helpers/mod.rs index 573eaa7fb..4bb0785d0 100644 --- a/bin/core/src/helpers/mod.rs +++ b/bin/core/src/helpers/mod.rs @@ -12,6 +12,7 @@ use monitor_types::{ }, monitor_timestamp, }; +use mungos::mongodb::bson::{doc, to_bson}; use periphery_client::{requests, PeripheryClient}; use rand::{thread_rng, Rng}; @@ -164,6 +165,27 @@ impl State { Ok(()) } + pub async fn remove_from_recently_viewed( + &self, + resource: impl Into, + ) -> anyhow::Result<()> { + let resource: ResourceTarget = resource.into(); + self.db + .users + .update_many( + doc! {}, + doc! { + "$pull": { + "recently_viewed": + to_bson(&resource).context("failed to convert resource to bson")? + } + }, + ) + .await + .context("failed to remove resource from users recently viewed")?; + Ok(()) + } + // pub fn periphery_client(&self, server: &Server) -> PeripheryClient { diff --git a/bin/core/src/requests/write/alerter.rs b/bin/core/src/requests/write/alerter.rs index 4d2e673d3..76936f73e 100644 --- a/bin/core/src/requests/write/alerter.rs +++ b/bin/core/src/requests/write/alerter.rs @@ -1,7 +1,7 @@ use anyhow::Context; use async_trait::async_trait; use monitor_types::{ - entities::{alerter::Alerter, update::ResourceTarget, Operation, PermissionLevel}, + entities::{alerter::Alerter, Operation, PermissionLevel}, monitor_timestamp, requests::write::{CopyAlerter, CreateAlerter, DeleteAlerter, UpdateAlerter}, }; @@ -124,11 +124,7 @@ impl Resolve for State { .get_resource_check_permissions(&id, &user, PermissionLevel::Update) .await?; - let mut update = make_update( - ResourceTarget::Alerter(id.clone()), - Operation::DeleteAlerter, - &user, - ); + let mut update = make_update(&alerter, Operation::DeleteAlerter, &user); self.db .alerters @@ -145,6 +141,8 @@ impl Resolve for State { self.add_update(update).await?; + self.remove_from_recently_viewed(&alerter).await?; + Ok(alerter) } } diff --git a/bin/core/src/requests/write/build.rs b/bin/core/src/requests/write/build.rs index 0449d38f9..977866d9d 100644 --- a/bin/core/src/requests/write/build.rs +++ b/bin/core/src/requests/write/build.rs @@ -195,6 +195,8 @@ impl Resolve for State { update.finalize(); self.update_update(update).await?; + self.remove_from_recently_viewed(&build).await?; + Ok(build) } } diff --git a/bin/core/src/requests/write/builder.rs b/bin/core/src/requests/write/builder.rs index 3007e074a..0d4c480ef 100644 --- a/bin/core/src/requests/write/builder.rs +++ b/bin/core/src/requests/write/builder.rs @@ -153,7 +153,7 @@ impl Resolve for State { .context("failed to delete builder from database")?; let mut update = Update { - target: ResourceTarget::Builder(id.clone()), + target: (&builder).into(), operation: Operation::DeleteBuilder, start_ts, operator: user.id.clone(), @@ -167,6 +167,8 @@ impl Resolve for State { update.finalize(); self.add_update(update).await?; + self.remove_from_recently_viewed(&builder).await?; + Ok(builder) } } diff --git a/bin/core/src/requests/write/deployment.rs b/bin/core/src/requests/write/deployment.rs index c91c1a163..f3f0d3994 100644 --- a/bin/core/src/requests/write/deployment.rs +++ b/bin/core/src/requests/write/deployment.rs @@ -252,6 +252,8 @@ impl Resolve for State { self.update_update(update).await?; + self.remove_from_recently_viewed(&deployment).await?; + Ok(deployment) }; diff --git a/bin/core/src/requests/write/repo.rs b/bin/core/src/requests/write/repo.rs index 62df270ad..2e4747adc 100644 --- a/bin/core/src/requests/write/repo.rs +++ b/bin/core/src/requests/write/repo.rs @@ -216,6 +216,8 @@ impl Resolve for State { update.finalize(); self.update_update(update).await?; + self.remove_from_recently_viewed(&repo).await?; + Ok(repo) }; diff --git a/bin/core/src/requests/write/server.rs b/bin/core/src/requests/write/server.rs index 8a77549c9..75b7c0d2e 100644 --- a/bin/core/src/requests/write/server.rs +++ b/bin/core/src/requests/write/server.rs @@ -131,6 +131,8 @@ impl Resolve for State { self.server_status_cache.remove(&id).await; + self.remove_from_recently_viewed(&server).await?; + Ok(server) } }