diff --git a/core/src/requests/execute/mod.rs b/core/src/requests/execute/mod.rs index 41d61418a..af6578287 100644 --- a/core/src/requests/execute/mod.rs +++ b/core/src/requests/execute/mod.rs @@ -26,7 +26,7 @@ mod server; #[resolver_args(RequestUser)] #[serde(tag = "type", content = "params")] #[allow(clippy::enum_variant_names, clippy::large_enum_variant)] -pub enum ExecuteRequest { +enum ExecuteRequest { // ==== SERVER ==== PruneContainers(PruneDockerContainers), PruneImages(PruneDockerImages), diff --git a/core/src/requests/read/mod.rs b/core/src/requests/read/mod.rs index 193e495e7..747522749 100644 --- a/core/src/requests/read/mod.rs +++ b/core/src/requests/read/mod.rs @@ -28,7 +28,7 @@ mod search; #[resolver_args(RequestUser)] #[serde(tag = "type", content = "params")] #[allow(clippy::enum_variant_names, clippy::large_enum_variant)] -pub enum ReadRequest { +enum ReadRequest { // ==== SEARCH ==== FindResources(FindResources), diff --git a/core/src/requests/write/alerter.rs b/core/src/requests/write/alerter.rs new file mode 100644 index 000000000..8b44b3fbd --- /dev/null +++ b/core/src/requests/write/alerter.rs @@ -0,0 +1,52 @@ +use async_trait::async_trait; +use monitor_types::{ + entities::alerter::Alerter, + requests::write::{CopyAlerter, CreateAlerter, DeleteAlerter, UpdateAlerter}, +}; +use resolver_api::Resolve; + +use crate::{auth::RequestUser, state::State}; + +#[async_trait] +impl Resolve for State { + async fn resolve( + &self, + CreateAlerter { name, config }: CreateAlerter, + user: RequestUser, + ) -> anyhow::Result { + todo!() + } +} + +#[async_trait] +impl Resolve for State { + async fn resolve( + &self, + CopyAlerter { name, id }: CopyAlerter, + user: RequestUser, + ) -> anyhow::Result { + todo!() + } +} + +#[async_trait] +impl Resolve for State { + async fn resolve( + &self, + DeleteAlerter { id }: DeleteAlerter, + user: RequestUser, + ) -> anyhow::Result { + todo!() + } +} + +#[async_trait] +impl Resolve for State { + async fn resolve( + &self, + UpdateAlerter { id, config }: UpdateAlerter, + user: RequestUser, + ) -> anyhow::Result { + todo!() + } +} diff --git a/core/src/requests/write/mod.rs b/core/src/requests/write/mod.rs index 4147d6a6a..01caf926f 100644 --- a/core/src/requests/write/mod.rs +++ b/core/src/requests/write/mod.rs @@ -22,6 +22,8 @@ mod permissions; mod repo; mod secret; mod server; +mod alerter; +mod tag; #[typeshare] #[derive(Serialize, Deserialize, Debug, Clone, Resolver)] @@ -29,7 +31,7 @@ mod server; #[resolver_args(RequestUser)] #[serde(tag = "type", content = "params")] #[allow(clippy::enum_variant_names, clippy::large_enum_variant)] -pub enum WriteRequest { +enum WriteRequest { // ==== SECRET ==== CreateLoginSecret(CreateLoginSecret), DeleteLoginSecret(DeleteLoginSecret), @@ -46,24 +48,39 @@ pub enum WriteRequest { // ==== DEPLOYMENT ==== CreateDeployment(CreateDeployment), + CopyDeployment(CopyDeployment), DeleteDeployment(DeleteDeployment), UpdateDeployment(UpdateDeployment), RenameDeployment(RenameDeployment), // ==== BUILD ==== CreateBuild(CreateBuild), + CopyBuild(CopyBuild), DeleteBuild(DeleteBuild), UpdateBuild(UpdateBuild), // ==== BUIDLER ==== CreateBuilder(CreateBuilder), + CopyBuilder(CopyBuilder), DeleteBuilder(DeleteBuilder), UpdateBuilder(UpdateBuilder), // ==== REPO ==== CreateRepo(CreateRepo), - UpdateRepo(UpdateRepo), + CopyRepo(CopyRepo), DeleteRepo(DeleteRepo), + UpdateRepo(UpdateRepo), + + // ==== ALERTER ==== + CreateAlerter(CreateAlerter), + CopyAlerter(CopyAlerter), + DeleteAlerter(DeleteAlerter), + UpdateAlerter(UpdateAlerter), + + // ==== TAG ==== + CreateTag(CreateTag), + DeleteTag(DeleteTag), + UpdateTag(UpdateTag), } pub fn router() -> Router { diff --git a/core/src/requests/write/tag.rs b/core/src/requests/write/tag.rs new file mode 100644 index 000000000..19bf2d5b2 --- /dev/null +++ b/core/src/requests/write/tag.rs @@ -0,0 +1,45 @@ +use async_trait::async_trait; +use monitor_types::{ + entities::tag::CustomTag, + requests::write::{CreateTag, DeleteTag, UpdateTag}, +}; +use resolver_api::Resolve; + +use crate::{auth::RequestUser, state::State}; + +#[async_trait] +impl Resolve for State { + async fn resolve( + &self, + CreateTag { + name, + category, + color, + }: CreateTag, + user: RequestUser, + ) -> anyhow::Result { + todo!() + } +} + +#[async_trait] +impl Resolve for State { + async fn resolve( + &self, + UpdateTag { id, config }: UpdateTag, + user: RequestUser, + ) -> anyhow::Result { + todo!() + } +} + +#[async_trait] +impl Resolve for State { + async fn resolve( + &self, + DeleteTag { id }: DeleteTag, + user: RequestUser, + ) -> anyhow::Result { + todo!() + } +} diff --git a/lib/types/src/requests/write/alerter.rs b/lib/types/src/requests/write/alerter.rs new file mode 100644 index 000000000..675ec1d08 --- /dev/null +++ b/lib/types/src/requests/write/alerter.rs @@ -0,0 +1,44 @@ +use resolver_api::derive::Request; +use serde::{Deserialize, Serialize}; +use typeshare::typeshare; + +use crate::entities::alerter::{Alerter, PartialAlerterConfig}; + +// + +#[typeshare] +#[derive(Serialize, Deserialize, Debug, Clone, Request)] +#[response(Alerter)] +pub struct CreateAlerter { + pub name: String, + pub config: PartialAlerterConfig, +} + +// + +#[typeshare] +#[derive(Serialize, Deserialize, Debug, Clone, Request)] +#[response(Alerter)] +pub struct CopyAlerter { + pub name: String, + pub id: String, +} + +// + +#[typeshare] +#[derive(Serialize, Deserialize, Debug, Clone, Request)] +#[response(Alerter)] +pub struct DeleteAlerter { + pub id: String, +} + +// + +#[typeshare] +#[derive(Serialize, Deserialize, Debug, Clone, Request)] +#[response(Alerter)] +pub struct UpdateAlerter { + pub id: String, + pub config: PartialAlerterConfig, +} diff --git a/lib/types/src/requests/write/mod.rs b/lib/types/src/requests/write/mod.rs index e0ff8caf7..df4203687 100644 --- a/lib/types/src/requests/write/mod.rs +++ b/lib/types/src/requests/write/mod.rs @@ -1,3 +1,4 @@ +mod alerter; mod build; mod builder; mod deployment; @@ -8,6 +9,7 @@ mod server; mod tags; mod user; +pub use alerter::*; pub use build::*; pub use builder::*; pub use deployment::*;