aboutsummaryrefslogtreecommitdiffstats
path: root/crates/configuration/src/server
diff options
context:
space:
mode:
Diffstat (limited to 'crates/configuration/src/server')
-rw-r--r--crates/configuration/src/server/http_svc/routes/routing.rs4
-rw-r--r--crates/configuration/src/server/http_svc/routes/routing/delete_routing.rs41
-rw-r--r--crates/configuration/src/server/http_svc/routes/routing/replace_routing.rs42
3 files changed, 85 insertions, 2 deletions
diff --git a/crates/configuration/src/server/http_svc/routes/routing.rs b/crates/configuration/src/server/http_svc/routes/routing.rs
index 9013494..9da1b63 100644
--- a/crates/configuration/src/server/http_svc/routes/routing.rs
+++ b/crates/configuration/src/server/http_svc/routes/routing.rs
@@ -1,4 +1,4 @@
-//pub mod delete_routing;
+pub mod delete_routing;
pub mod get_active;
pub mod post_routing;
-//pub mod replace_routing;
+pub mod replace_routing;
diff --git a/crates/configuration/src/server/http_svc/routes/routing/delete_routing.rs b/crates/configuration/src/server/http_svc/routes/routing/delete_routing.rs
new file mode 100644
index 0000000..07148cc
--- /dev/null
+++ b/crates/configuration/src/server/http_svc/routes/routing/delete_routing.rs
@@ -0,0 +1,41 @@
+use axum::extract::{Path, State};
+use tonic::IntoRequest;
+use warden_core::configuration::routing::{
+ DeleteConfigurationRequest, RoutingConfiguration, mutate_routing_server::MutateRouting,
+};
+
+use crate::{
+ server::{error::AppError, http_svc::TAG_ROUTING, version::Version},
+ state::AppHandle,
+};
+
+/// Delete routing configuration
+#[utoipa::path(
+ delete,
+ path = "/{version}/routing/{id}",
+ responses((
+ status = OK,
+ body = RoutingConfiguration
+ )),
+ operation_id = "delete_routing_configuration", // https://github.com/juhaku/utoipa/issues/1170
+ params(
+ ("version" = Version, Path, description = "API version, e.g., v1, v2, v3"),
+ ("id" = String, Path, description = "Identifier for item to delete"),
+ ),
+ tag = TAG_ROUTING,
+ )
+]
+#[axum::debug_handler]
+#[tracing::instrument(skip(state))]
+pub async fn delete(
+ State(state): State<AppHandle>,
+ Path(id): Path<String>,
+ axum::Json(body): axum::Json<RoutingConfiguration>,
+) -> Result<axum::Json<RoutingConfiguration>, AppError> {
+ let body = state
+ .delete_routing_configuration(DeleteConfigurationRequest { id }.into_request())
+ .await?
+ .into_inner();
+
+ Ok(axum::Json(body))
+}
diff --git a/crates/configuration/src/server/http_svc/routes/routing/replace_routing.rs b/crates/configuration/src/server/http_svc/routes/routing/replace_routing.rs
new file mode 100644
index 0000000..ccf184f
--- /dev/null
+++ b/crates/configuration/src/server/http_svc/routes/routing/replace_routing.rs
@@ -0,0 +1,42 @@
+use axum::extract::{Path, State};
+use warden_core::configuration::routing::{
+ RoutingConfiguration, UpdateRoutingRequest, mutate_routing_server::MutateRouting,
+};
+
+use crate::{
+ server::{error::AppError, http_svc::TAG_ROUTING, version::Version},
+ state::AppHandle,
+};
+
+/// Replace routing configuration
+#[utoipa::path(
+ put,
+ responses((
+ status = OK,
+ body = RoutingConfiguration
+ )),
+ path = "/{version}/routing/{id}",
+ params(
+ ("version" = Version, Path, description = "API version, e.g., v1, v2, v3"),
+ ("id" = String, Path, description = "Identifier for item to replace"),
+ ),
+ operation_id = "replace_routing_configuration", // https://github.com/juhaku/utoipa/issues/1170
+ tag = TAG_ROUTING,
+ )
+]
+#[axum::debug_handler]
+#[tracing::instrument(skip(state))]
+pub async fn replace(
+ State(state): State<AppHandle>,
+ Path(id): Path<String>,
+ axum::Json(body): axum::Json<RoutingConfiguration>,
+) -> Result<axum::Json<RoutingConfiguration>, AppError> {
+ let response = state
+ .update_routing_configuration(tonic::Request::new(UpdateRoutingRequest {
+ id,
+ configuration: Some(body),
+ }))
+ .await?
+ .into_inner();
+ Ok(axum::Json(response))
+}