diff --git a/server/src/api/analytics.rs b/server/src/api/analytics.rs index 13a903e..929e11f 100644 --- a/server/src/api/analytics.rs +++ b/server/src/api/analytics.rs @@ -119,7 +119,7 @@ mod handlers { pub async fn patch_config(client: Client, obj: Value) -> Result { - println!("{:?}", obj); + // println!("{:?}", obj); match client.get_config().await { Ok(cf) => Ok(API::json(&cf)), Err(e) => { diff --git a/server/src/services/analytic_service/analytic_client.rs b/server/src/services/analytic_service/analytic_client.rs index de544e5..02a1401 100644 --- a/server/src/services/analytic_service/analytic_client.rs +++ b/server/src/services/analytic_service/analytic_client.rs @@ -1,3 +1,4 @@ +use serde_json::Value; use tokio::sync::mpsc; use tokio::sync::oneshot; @@ -43,6 +44,14 @@ impl AnalyticClient { Ok(r) } + pub async fn patch_config(&self, patch_obj: Value) -> anyhow::Result<()> { + let (tx, rx) = oneshot::channel(); + let req = AnalyticServiceMessage::Request(RequestType::PatchConfig(patch_obj, tx)); + self.tx.send(req).await?; + rx.await?; + Ok(()) + } + // pub async fn get_train(&self) -> anyhow::Result { // let (tx, rx) = oneshot::channel(); // let req = AnalyticServiceMessage::Request(RequestType::GetLearningTrain(tx)); diff --git a/server/src/services/analytic_service/analytic_service.rs b/server/src/services/analytic_service/analytic_service.rs index 776bbc1..f5a21ef 100644 --- a/server/src/services/analytic_service/analytic_service.rs +++ b/server/src/services/analytic_service/analytic_service.rs @@ -168,6 +168,11 @@ impl AnalyticService { // } RequestType::GetConfig(tx) => { tx.send(self.analytic_unit_config.clone()).unwrap(); + }, + RequestType::PatchConfig(patch_obj, tx) => { + // TODO: path config + // TODO: run learning if config type changed + tx.send(()).unwrap(); } }; } diff --git a/server/src/services/analytic_service/types.rs b/server/src/services/analytic_service/types.rs index dd4e976..3732977 100644 --- a/server/src/services/analytic_service/types.rs +++ b/server/src/services/analytic_service/types.rs @@ -9,6 +9,7 @@ use super::analytic_unit::{ use anyhow::Result; use serde::Serialize; +use serde_json::Value; use tokio::sync::oneshot; use crate::services::analytic_service::analytic_unit::types::AnalyticUnit; @@ -72,6 +73,8 @@ pub enum RequestType { RunLearning, RunDetection(DetectionTask), GetStatus(oneshot::Sender), + // TODO: make type of Value + PatchConfig(Value, oneshot::Sender<()>), GetConfig(oneshot::Sender), // GetLearningTrain(oneshot::Sender), }