diff --git a/apps/nxmesh-master/src/service/proxy/mod.rs b/apps/nxmesh-master/src/service/proxy/mod.rs index ce6d5b2..3d5e893 100644 --- a/apps/nxmesh-master/src/service/proxy/mod.rs +++ b/apps/nxmesh-master/src/service/proxy/mod.rs @@ -39,6 +39,9 @@ pub trait ProxyServiceTrait: Send + Sync + 'static { ) -> ProxyServiceResult; async fn delete_config(&self, id: uuid::Uuid) -> ProxyServiceResult; + // Render + async fn render_config(&self, proxy_id: uuid::Uuid) -> ProxyServiceResult; + // Binding async fn get_active_agent_config( &self, diff --git a/apps/nxmesh-master/src/service/proxy/service.rs b/apps/nxmesh-master/src/service/proxy/service.rs index 870dc11..95b779e 100644 --- a/apps/nxmesh-master/src/service/proxy/service.rs +++ b/apps/nxmesh-master/src/service/proxy/service.rs @@ -32,6 +32,15 @@ impl ProxyServiceTrait for ProxyServiceImpl { self.repo.get_merged_proxy_config(proxy_id).await } + async fn render_config(&self, proxy_id: uuid::Uuid) -> ProxyServiceResult { + let config = self.repo.get_merged_proxy_config(proxy_id).await?; + let renderer = self + .renderers + .get(&config.r#type) + .ok_or(ProxyServiceError::RendererNotFound)?; + Ok(renderer.render(&config)) + } + async fn list_configs(&self) -> ProxyServiceResult> { self.repo.list_proxy_configs().await } diff --git a/apps/nxmesh-master/src/service/proxy/upstream/mod.rs b/apps/nxmesh-master/src/service/proxy/upstream/mod.rs index 23a9738..06c2c8d 100644 --- a/apps/nxmesh-master/src/service/proxy/upstream/mod.rs +++ b/apps/nxmesh-master/src/service/proxy/upstream/mod.rs @@ -2,7 +2,7 @@ use sea_orm::{ActiveModelTrait, ActiveValue::Set, DatabaseConnection, EntityTrai use uuid::Uuid; use crate::service::proxy::types::{ - OverrideRef, ProxyServiceError, ProxyServiceResult, UpstreamConfig, + ProxyServiceError, ProxyServiceResult, UpstreamConfig, }; pub struct CreateUpstreamParams { @@ -34,6 +34,7 @@ fn model_to_config(model: crate::db::entities::upstream::Model) -> UpstreamConfi } } +#[cfg_attr(test, mockall::automock)] #[async_trait::async_trait] pub trait UpstreamService: Send + Sync + 'static { async fn get(&self, id: Uuid) -> ProxyServiceResult;