use crate::services::nginx::info::upstream::UpstreamInfo; pub const INDENT_SIZE: usize = 2; pub trait NginxConfigProvider { fn to_nginx_config(&self, indent: Option) -> String; } #[derive(Default)] pub struct NginxConfigBuilder { upstreams: Vec, } impl NginxConfigBuilder { pub fn add_upstream(&mut self, upstream: UpstreamInfo) { self.upstreams.push(upstream); } pub fn add_upstreams(&mut self, upstreams: Vec) { for upstream in upstreams { self.add_upstream(upstream); } } } impl NginxConfigProvider for NginxConfigBuilder { fn to_nginx_config(&self, indent: Option) -> String { let mut config = format!( "# Nginx Config Generated by YANPM at {}", chrono::Utc::now() ); for upstream in &self.upstreams { config.push('\n'); config.push_str(&upstream.to_nginx_config(indent)); } // TODO: Add other sections like servers, locations, etc. config } }