feature/upstream-service #13

Merged
GW_MC merged 43 commits from feature/upstream-service into master 2026-01-01 10:49:32 +08:00
Showing only changes of commit 545bc66f8c - Show all commits

View File

@@ -13,6 +13,8 @@ use crate::{
set_if_some,
};
const PLACEHOLDER_TARGET: &str = "server 127.0.0.1:65535 down; # placeholder target\n";
#[derive(Clone)]
pub struct UpstreamInfo {
pub id: Uuid,
@@ -54,12 +56,18 @@ impl NginxConfigProvider for UpstreamInfo {
.iter()
.map(|target| target.to_nginx_config(Some(indent.unwrap_or(0) + INDENT_SIZE)))
.collect();
let targets_config_str = if targets_config.is_empty() {
"server 127.0.0.1:65535 down; # placeholder target".to_string()
let mut targets_config_str = if targets_config.is_empty() {
PLACEHOLDER_TARGET.to_string()
} else {
targets_config.join("\n")
let mut r = targets_config.join("\n");
r.push('\n');
r
}
.indent(indent.unwrap_or(0) + INDENT_SIZE);
if self.upstream_targets.iter().all(|v| v.is_backup) {
targets_config_str
.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))
}
}
@@ -106,6 +114,17 @@ impl From<upstream::Model> for UpstreamInfo {
}
}
impl From<(upstream::Model, Option<Vec<upstream_target::Model>>)> for UpstreamInfo {
fn from(data: (upstream::Model, Option<Vec<upstream_target::Model>>)) -> Self {
let (upstream_model, upstream_target_models) = data;
if let Some(targets) = upstream_target_models {
UpstreamInfo::from((upstream_model, targets))
} else {
UpstreamInfo::from(upstream_model)
}
}
}
impl From<(upstream::Model, Vec<upstream_target::Model>)> for UpstreamInfo {
fn from(data: (upstream::Model, Vec<upstream_target::Model>)) -> Self {
let (upstream_model, upstream_target_models) = data;