diff --git a/apps/api/src/services/nginx/info/upstream_target.rs b/apps/api/src/services/nginx/info/upstream_target.rs index 93585f5..3331098 100644 --- a/apps/api/src/services/nginx/info/upstream_target.rs +++ b/apps/api/src/services/nginx/info/upstream_target.rs @@ -4,7 +4,7 @@ use optfield::optfield; use sea_orm::ActiveValue::{Set, Unchanged}; use uuid::Uuid; -use database::generated::entities::upstream_target; +use database::generated::entities::{upstream, upstream_target}; use crate::{ services::nginx::{builder::NginxConfigProvider, traits::indentable::Indentable}, @@ -24,6 +24,17 @@ pub struct UpstreamTargetInfo { pub updated_at: DateTime, // pub upstream_id: uuid::Uuid, + pub upstream: Option, +} + +#[derive(Clone)] +pub struct UpstreamBasicInfo { + pub id: uuid::Uuid, + pub name: String, + pub protocol: String, + // + pub created_at: DateTime, + pub updated_at: DateTime, } pub struct UpstreamTargetCreateInfo { @@ -48,6 +59,31 @@ impl From for UpstreamTargetInfo { created_at: model.created_at, updated_at: model.updated_at, upstream_id: model.upstream_id, + upstream: None, + } + } +} + +impl From<(upstream_target::Model, upstream::Model)> for UpstreamTargetInfo { + fn from(data: (upstream_target::Model, upstream::Model)) -> Self { + let (target_model, up_model) = data; + Self { + id: target_model.id, + target_host: target_model.target_host, + target_port: target_model.target_port, + weight: target_model.weight, + is_backup: target_model.is_backup, + enabled: target_model.enabled, + created_at: target_model.created_at, + updated_at: target_model.updated_at, + upstream_id: target_model.upstream_id, + upstream: Some(UpstreamBasicInfo { + id: up_model.id, + name: up_model.name, + protocol: up_model.protocol, + created_at: up_model.created_at, + updated_at: up_model.updated_at, + }), } } }