diff --git a/core/src/requests/api/build.rs b/core/src/requests/api/build.rs index 2f07b02c1..34cd49f31 100644 --- a/core/src/requests/api/build.rs +++ b/core/src/requests/api/build.rs @@ -6,7 +6,7 @@ use futures::future::join_all; use monitor_types::{ all_logs_success, entities::{ - build::{Build, BuildBuilderConfig}, + build::{Build, BuildActionState, BuildBuilderConfig}, builder::{AwsBuilder, BuilderConfig}, deployment::DockerContainerState, update::{Log, ResourceTarget, Update, UpdateStatus}, @@ -65,6 +65,20 @@ impl Resolve for State { } } +#[async_trait] +impl Resolve for State { + async fn resolve( + &self, + GetBuildActionState { id }: GetBuildActionState, + user: RequestUser, + ) -> anyhow::Result { + self.get_build_check_permissions(&id, &user, PermissionLevel::Read) + .await?; + let action_state = self.action_states.build.get(&id).await.unwrap_or_default(); + Ok(action_state) + } +} + #[async_trait] impl Resolve for State { async fn resolve( diff --git a/core/src/requests/api/deployment.rs b/core/src/requests/api/deployment.rs index 77a232f2c..036caf3c6 100644 --- a/core/src/requests/api/deployment.rs +++ b/core/src/requests/api/deployment.rs @@ -6,8 +6,8 @@ use monitor_types::{ all_logs_success, entities::{ deployment::{ - Deployment, DeploymentConfig, DeploymentImage, DockerContainerState, - DockerContainerStats, + Deployment, DeploymentActionState, DeploymentConfig, DeploymentImage, + DockerContainerState, DockerContainerStats, }, server::ServerStatus, update::{Log, ResourceTarget, Update, UpdateStatus}, @@ -181,6 +181,25 @@ impl Resolve for State { } } +#[async_trait] +impl Resolve for State { + async fn resolve( + &self, + GetDeploymentActionState { id }: GetDeploymentActionState, + user: RequestUser, + ) -> anyhow::Result { + self.get_deployment_check_permissions(&id, &user, PermissionLevel::Read) + .await?; + let action_state = self + .action_states + .deployment + .get(&id) + .await + .unwrap_or_default(); + Ok(action_state) + } +} + #[async_trait] impl Resolve for State { async fn resolve( diff --git a/core/src/requests/api/repo.rs b/core/src/requests/api/repo.rs index 279b8cd24..b8dcfa205 100644 --- a/core/src/requests/api/repo.rs +++ b/core/src/requests/api/repo.rs @@ -2,15 +2,13 @@ use anyhow::{anyhow, Context}; use async_trait::async_trait; use monitor_types::{ entities::{ - repo::Repo, + repo::{Repo, RepoActionState}, update::{Log, ResourceTarget, Update, UpdateStatus}, Operation, PermissionLevel, }, monitor_timestamp, optional_string, permissioned::Permissioned, - requests::api::{ - CloneRepo, CopyRepo, CreateRepo, DeleteRepo, GetRepo, ListRepos, PullRepo, UpdateRepo, - }, + requests::api::*, }; use mungos::mongodb::bson::{doc, to_bson}; use periphery_client::requests; @@ -53,6 +51,20 @@ impl Resolve for State { } } +#[async_trait] +impl Resolve for State { + async fn resolve( + &self, + GetRepoActionState { id }: GetRepoActionState, + user: RequestUser, + ) -> anyhow::Result { + self.get_repo_check_permissions(&id, &user, PermissionLevel::Read) + .await?; + let action_state = self.action_states.repo.get(&id).await.unwrap_or_default(); + Ok(action_state) + } +} + #[async_trait] impl Resolve for State { async fn resolve( diff --git a/core/src/requests/api/server.rs b/core/src/requests/api/server.rs index 2976d3cd9..2cc7fe1f3 100644 --- a/core/src/requests/api/server.rs +++ b/core/src/requests/api/server.rs @@ -5,7 +5,7 @@ use monitor_types::{ deployment::BasicContainerInfo, server::{ docker_image::ImageSummary, docker_network::DockerNetwork, stats::SystemInformation, - Server, + Server, ServerActionState, }, update::{Log, ResourceTarget, Update, UpdateStatus}, Operation, PermissionLevel, @@ -74,6 +74,20 @@ impl Resolve for State { } } +#[async_trait] +impl Resolve for State { + async fn resolve( + &self, + GetServerActionState { id }: GetServerActionState, + user: RequestUser, + ) -> anyhow::Result { + self.get_server_check_permissions(&id, &user, PermissionLevel::Read) + .await?; + let action_state = self.action_states.server.get(&id).await.unwrap_or_default(); + Ok(action_state) + } +} + #[async_trait] impl Resolve for State { async fn resolve(&self, req: CreateServer, user: RequestUser) -> anyhow::Result {