diff --git a/server/src/services/analytic_service/analytic_service.rs b/server/src/services/analytic_service/analytic_service.rs index 582e097..9f023c2 100644 --- a/server/src/services/analytic_service/analytic_service.rs +++ b/server/src/services/analytic_service/analytic_service.rs @@ -283,18 +283,48 @@ impl AnalyticService { println!("equals: {}", my_id == patch_id); + let same_type = my_id == patch_id; + + if same_type { + let new_conf = patch.get_new_config(); + self.analytic_unit_config = new_conf.clone(); + self.analytic_unit_service.update_config_by_id(&my_id, &new_conf).unwrap(); + if self.analytic_unit.is_some() { + tokio::spawn({ + let au = self.analytic_unit.clone(); + let cfg = self.analytic_unit_config.clone(); + async move { + au.unwrap().write().await.set_config(cfg); + match tx.send(()) { + Ok(_) => {} + Err(_e) => { + println!("Can`t send patch config notification"); + } + } + } + }); + } else { + // TODO: implement + } + } else { + // TODO: extracdt from db + + match tx.send(()) { + Ok(_) => {} + Err(_e) => { + println!("Can`t send patch config notification"); + } + } + } + + // TODO: update analytic_unit config if some // TODO: save updated // TODO: run learning when different // TODO: run learning when it's necessary - match tx.send(()) { - Ok(_) => {} - Err(_e) => { - println!("Can`t send patch config notification"); - } - } + diff --git a/server/src/services/analytic_service/analytic_unit/types.rs b/server/src/services/analytic_service/analytic_unit/types.rs index cdbed87..4f3a9fb 100644 --- a/server/src/services/analytic_service/analytic_unit/types.rs +++ b/server/src/services/analytic_service/analytic_unit/types.rs @@ -164,4 +164,12 @@ impl PatchConfig { PatchConfig::Anomaly(_) => "3".to_string() } } + + pub fn get_new_config(&self) -> AnalyticUnitConfig { + match &self { + PatchConfig::Threshold(cfg) => AnalyticUnitConfig::Threshold(cfg.as_ref().unwrap().clone()), + PatchConfig::Pattern(cfg) => AnalyticUnitConfig::Pattern(cfg.as_ref().unwrap().clone()), + PatchConfig::Anomaly(cfg) => AnalyticUnitConfig::Anomaly(cfg.as_ref().unwrap().clone()) + } + } } \ No newline at end of file