diff --git a/apps/api/src/errors.rs b/apps/api/src/errors.rs index ae13070..d261f2c 100644 --- a/apps/api/src/errors.rs +++ b/apps/api/src/errors.rs @@ -1 +1,2 @@ +pub mod api_error; pub mod service_error; diff --git a/apps/api/src/errors/api_error.rs b/apps/api/src/errors/api_error.rs new file mode 100644 index 0000000..8f16996 --- /dev/null +++ b/apps/api/src/errors/api_error.rs @@ -0,0 +1,21 @@ +use axum::response::IntoResponse; + +use crate::errors::service_error::ServiceError; + +pub enum ApiError { + ServiceError(ServiceError), +} + +impl From for ApiError { + fn from(err: ServiceError) -> Self { + ApiError::ServiceError(err) + } +} + +impl IntoResponse for ApiError { + fn into_response(self) -> axum::response::Response { + match self { + ApiError::ServiceError(service_error) => service_error.into_response(), + } + } +} diff --git a/apps/api/src/routes/api/restricted/nginx/upstream/get_upstream.rs b/apps/api/src/routes/api/restricted/nginx/upstream/get_upstream.rs index 65777b7..e1cdd95 100644 --- a/apps/api/src/routes/api/restricted/nginx/upstream/get_upstream.rs +++ b/apps/api/src/routes/api/restricted/nginx/upstream/get_upstream.rs @@ -9,7 +9,7 @@ use serde::{Deserialize, Serialize}; use uuid::Uuid; use crate::{ - errors::service_error::ServiceError, + errors::{api_error::ApiError, service_error::ServiceError}, routes::{ AppState, api::{ @@ -64,7 +64,7 @@ pub async fn get_upstream( Path(upstream_id): Path, Query(params): Query, State(_state): State>, -) -> AxumResult, ServiceError> { +) -> AxumResult, ApiError> { let concrete_params: ConcreteGetUpstreamParams = params.into(); let upstream_service = &_state.service.nginx.get_upstream_service(); let upstream_info = if concrete_params.include_targets { diff --git a/apps/api/src/routes/api/restricted/nginx/upstream/get_upstream_target.rs b/apps/api/src/routes/api/restricted/nginx/upstream/get_upstream_target.rs index 4d9de96..fdc5d47 100644 --- a/apps/api/src/routes/api/restricted/nginx/upstream/get_upstream_target.rs +++ b/apps/api/src/routes/api/restricted/nginx/upstream/get_upstream_target.rs @@ -9,7 +9,7 @@ use serde::{Deserialize, Serialize}; use uuid::Uuid; use crate::{ - errors::service_error::ServiceError, + errors::{api_error::ApiError, service_error::ServiceError}, routes::{AppState, api::restricted::nginx::upstream::info::response::UpstreamTargetInfo}, }; @@ -34,7 +34,7 @@ pub async fn get_upstream_target( Path(upstream_target_id): Path, Query(params): Query, State(_state): State>, -) -> AxumResult, ServiceError> { +) -> AxumResult, ApiError> { let concrete_params: ConcreteGetUpstreamTargetsParams = params.into(); let upstream_service = &_state.service.nginx.get_upstream_service(); let upstream_target_info = upstream_service