Merge branch 'next' of https://github.com/mbecker20/monitor into next

This commit is contained in:
karamvir
2023-08-05 23:13:35 -07:00
7 changed files with 43 additions and 8 deletions

View File

@@ -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<ResourceTarget>,
) -> 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 {

View File

@@ -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<DeleteAlerter, RequestUser> 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<DeleteAlerter, RequestUser> for State {
self.add_update(update).await?;
self.remove_from_recently_viewed(&alerter).await?;
Ok(alerter)
}
}

View File

@@ -9,7 +9,7 @@ use monitor_types::{
Operation, PermissionLevel,
},
monitor_timestamp,
requests::write::*,
requests::write::*, to_monitor_name,
};
use mungos::mongodb::bson::{doc, to_bson};
use resolver_api::Resolve;
@@ -28,6 +28,7 @@ impl Resolve<CreateBuild, RequestUser> for State {
CreateBuild { name, config }: CreateBuild,
user: RequestUser,
) -> anyhow::Result<Build> {
let name = to_monitor_name(&name);
if let Some(builder) = &config.builder {
match builder {
BuildBuilderConfig::Server { server_id } => {
@@ -195,6 +196,8 @@ impl Resolve<DeleteBuild, RequestUser> for State {
update.finalize();
self.update_update(update).await?;
self.remove_from_recently_viewed(&build).await?;
Ok(build)
}
}

View File

@@ -153,7 +153,7 @@ impl Resolve<DeleteBuilder, RequestUser> 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<DeleteBuilder, RequestUser> for State {
update.finalize();
self.add_update(update).await?;
self.remove_from_recently_viewed(&builder).await?;
Ok(builder)
}
}

View File

@@ -26,6 +26,7 @@ impl Resolve<CreateDeployment, RequestUser> for State {
CreateDeployment { name, config }: CreateDeployment,
user: RequestUser,
) -> anyhow::Result<Deployment> {
let name = to_monitor_name(&name);
if let Some(server_id) = &config.server_id {
if !server_id.is_empty() {
let _: Server = self.get_resource_check_permissions(server_id, &user, PermissionLevel::Update)
@@ -252,6 +253,8 @@ impl Resolve<DeleteDeployment, RequestUser> for State {
self.update_update(update).await?;
self.remove_from_recently_viewed(&deployment).await?;
Ok(deployment)
};
@@ -381,6 +384,7 @@ impl Resolve<RenameDeployment, RequestUser> for State {
RenameDeployment { id, name }: RenameDeployment,
user: RequestUser,
) -> anyhow::Result<Update> {
let name = to_monitor_name(&name);
if self.action_states.deployment.busy(&id).await {
return Err(anyhow!("deployment busy"));
}

View File

@@ -9,6 +9,7 @@ use monitor_types::{
},
monitor_timestamp,
requests::{execute, write::*},
to_monitor_name,
};
use mungos::mongodb::bson::{doc, to_bson};
use periphery_client::requests;
@@ -23,6 +24,7 @@ impl Resolve<CreateRepo, RequestUser> for State {
CreateRepo { name, config }: CreateRepo,
user: RequestUser,
) -> anyhow::Result<Repo> {
let name = to_monitor_name(&name);
if let Some(server_id) = &config.server_id {
if !server_id.is_empty() {
let _: Server = self.get_resource_check_permissions(
@@ -216,6 +218,8 @@ impl Resolve<DeleteRepo, RequestUser> for State {
update.finalize();
self.update_update(update).await?;
self.remove_from_recently_viewed(&repo).await?;
Ok(repo)
};

View File

@@ -131,6 +131,8 @@ impl Resolve<DeleteServer, RequestUser> for State {
self.server_status_cache.remove(&id).await;
self.remove_from_recently_viewed(&server).await?;
Ok(server)
}
}