From b26d36fad2ba8d145221ae52e5e635b8d599f3d2 Mon Sep 17 00:00:00 2001 From: Alexey Velikiy Date: Thu, 23 Dec 2021 10:56:12 +0300 Subject: [PATCH] serialize config in analytic_unit --- server/src/services/analytic_unit_service.rs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/server/src/services/analytic_unit_service.rs b/server/src/services/analytic_unit_service.rs index be5f4d2..f09fa6e 100644 --- a/server/src/services/analytic_unit_service.rs +++ b/server/src/services/analytic_unit_service.rs @@ -1,4 +1,6 @@ use std::sync::{Arc, Mutex}; +use serde_json::{Result, Value}; +use serde::{Deserialize, Serialize}; use rusqlite::{params, Connection}; @@ -33,7 +35,7 @@ impl AnalyticUnitService { } // TODO: optional id - pub fn resolve_au(&self, cfg: AnalyticUnitConfig) -> Box { + pub fn resolve_au(&self, cfg: &AnalyticUnitConfig) -> Box { match cfg { AnalyticUnitConfig::Threshold(c) => Box::new(ThresholdAnalyticUnit::new("1".to_string(), c.clone())), AnalyticUnitConfig::Pattern(c) => Box::new(PatternAnalyticUnit::new("2".to_string(), c.clone())), @@ -43,7 +45,7 @@ impl AnalyticUnitService { // TODO: get id of analytic_unit which be used also as it's type pub fn resolve(&self, cfg: AnalyticUnitConfig) -> anyhow::Result> { - let au = self.resolve_au(cfg); + let au = self.resolve_au(&cfg); let id = au.as_ref().get_id(); let conn = self.connection.lock().unwrap(); @@ -54,9 +56,11 @@ impl AnalyticUnitService { if res == false { // TODO: save default + // TODO: save serialised config + let cfg_json = serde_json::to_string(&cfg)?; conn.execute( - "INSERT INTO analytic_unit (id) VALUES (?1)", - params![id] + "INSERT INTO analytic_unit (id, type, config) VALUES (?1, ?1, ?2)", + params![id, cfg_json] )?; }