diff --git a/apps/api/src/services/nginx/info/upstream.rs b/apps/api/src/services/nginx/info/upstream.rs index 4c38b61..b7cb0af 100644 --- a/apps/api/src/services/nginx/info/upstream.rs +++ b/apps/api/src/services/nginx/info/upstream.rs @@ -6,6 +6,7 @@ use tracing::warn; use uuid::Uuid; use crate::{ + errors::service_error::ServiceError, services::nginx::{ builder::{INDENT_SIZE, NginxConfigProvider}, info::upstream_target as upstream_target_info, @@ -51,12 +52,12 @@ pub struct UpdateUpstreamInfo { } impl NginxConfigProvider for UpstreamInfo { - fn to_nginx_config(&self, indent: Option) -> String { + fn to_nginx_config(&self, indent: Option) -> Result { let targets_config: Vec = self .upstream_targets .iter() .map(|target| target.to_nginx_config(Some(indent.unwrap_or(0) + INDENT_SIZE))) - .collect(); + .collect::, ServiceError>>()?; let mut targets_config_str = { let config_str = match self.algorithm.as_str() { @@ -104,7 +105,10 @@ impl NginxConfigProvider for UpstreamInfo { .push_str(&PLACEHOLDER_TARGET.indent(indent.unwrap_or(0) + INDENT_SIZE)); } - format!("upstream {} {{\n{}\n}}", self.name, targets_config_str).indent(indent.unwrap_or(0)) + Ok( + format!("upstream {} {{\n{}\n}}", self.name, targets_config_str) + .indent(indent.unwrap_or(0)), + ) } } diff --git a/apps/api/src/services/nginx/info/upstream_target.rs b/apps/api/src/services/nginx/info/upstream_target.rs index b558566..acee880 100644 --- a/apps/api/src/services/nginx/info/upstream_target.rs +++ b/apps/api/src/services/nginx/info/upstream_target.rs @@ -6,6 +6,7 @@ use uuid::Uuid; use database::generated::entities::{upstream, upstream_target}; use crate::{ + errors::service_error::ServiceError, services::nginx::{builder::NginxConfigProvider, traits::indentable::Indentable}, set_if_some, }; @@ -128,8 +129,8 @@ impl From for upstream_target::ActiveModel { } impl NginxConfigProvider for UpstreamTargetInfo { - fn to_nginx_config(&self, indent: Option) -> String { - format!( + fn to_nginx_config(&self, indent: Option) -> Result { + Ok(format!( "server {}:{} weight={}{}{};", self.target_host, self.target_port, @@ -137,7 +138,7 @@ impl NginxConfigProvider for UpstreamTargetInfo { if self.is_backup { " backup" } else { "" }, if !self.enabled { " down" } else { "" }, ) - .indent(indent.unwrap_or(0)) + .indent(indent.unwrap_or(0))) } }