diff --git a/server/src/services/analytic_service/analytic_service.rs b/server/src/services/analytic_service/analytic_service.rs index aba5a6f..326dc18 100644 --- a/server/src/services/analytic_service/analytic_service.rs +++ b/server/src/services/analytic_service/analytic_service.rs @@ -274,9 +274,9 @@ impl AnalyticService { } fn patch_config(&mut self, patch: PatchConfig, tx: oneshot::Sender<()>) { - // TODO: update config in db + let (new_conf, need_learning, same_type) = self.analytic_unit_config.patch(patch); - self.analytic_unit_config = new_conf; + self.analytic_unit_config = new_conf.clone(); if need_learning { self.consume_request(RequestType::RunLearning); // TODO: it's not fully correct: we need to wait when the learning starts @@ -311,6 +311,13 @@ impl AnalyticService { } } + if same_type { + // TODO: avoid using `unwrap` + self.analytic_unit_service.update_active_config(&new_conf).unwrap(); + } else { + // TODO: implement + } + // TODO: save config depending on type } diff --git a/server/src/services/analytic_unit_service.rs b/server/src/services/analytic_unit_service.rs index 08444b2..036ee2f 100644 --- a/server/src/services/analytic_unit_service.rs +++ b/server/src/services/analytic_unit_service.rs @@ -127,7 +127,16 @@ impl AnalyticUnitService { } } - pub fn update_active_config() { - // TODO: implement + pub fn update_active_config(&self, cfg: &AnalyticUnitConfig) -> anyhow::Result<()> { + let conn = self.connection.lock().unwrap(); + + let cfg_json = serde_json::to_string(&cfg)?; + + conn.execute( + "UPDATE analytic_unit SET config = ?1 WHERE active = TRUE", + params![cfg_json] + )?; + + return Ok(()); } } \ No newline at end of file