services: imports: refine to use SystemTime

* Use standard library to calculate SystemTime and Duration
* exporse results to be accessible in orbtk views

Signed-off-by: Ralf Zerres <ralf.zerres@networkx.de>
This commit is contained in:
2020-07-15 00:04:54 +02:00
parent 3d913e7127
commit ffa8c18efb

View File

@@ -9,6 +9,7 @@ use chrono::{Local, DateTime};
use locales::t;
use std::error::Error;
use std::collections::HashMap;
use std::time::{Duration, SystemTime};
use tracing::trace;
//use crate::db::redis;
@@ -23,18 +24,19 @@ pub fn import(p: &mut String, data_list: &mut PolicyDataList,
policy_numbers: &mut HashMap<usize, PolicyCode>,
policy_data_count: &mut usize,
lang: &String)
-> Result<usize, Box<dyn Error>> {
-> Result<(usize, Duration), Box<dyn Error>> {
use std::fs::File;
use std::path::Path;
use std::ffi::OsStr;
let mut res = t!("csv.import.started", lang);
let mut state = t!("state.started", lang);
let dt_start: DateTime<Local> = Local::now();
let time_start = SystemTime::now();
let datetime: DateTime<Local> = time_start.into();
trace!(target: "advotrackerd", process = ?res, state = ?state, date_start = ?dt_start.to_string());
trace!(target: "advotrackerd", process = ?res, state = ?state, date_start = ?datetime.to_string());
// Note: slash syntax also workd on Windows!
// Note: slash syntax also works on Windows!
let path = Path::new(p);
// must be a readable file
@@ -81,12 +83,11 @@ pub fn import(p: &mut String, data_list: &mut PolicyDataList,
count +=1;
*policy_data_count = count;
};
let dt_end: DateTime<Local> = Local::now();
let duration = dt_end.signed_duration_since(dt_start);
let time_end = SystemTime::now();
let duration = time_end.duration_since(time_start)
.expect("Clock may have gone backwards");
trace!(target: "advotrackerd", record_count = ?count, duration = ?duration);
// Tests
@@ -105,7 +106,8 @@ pub fn import(p: &mut String, data_list: &mut PolicyDataList,
state = t!("state.finished", lang);
res = t!("csv.import.finished", lang);
trace!(target: "advotrackerd", process = ?res, state = ?state, date_stop = ?dt_end.to_string());
let datetime: DateTime<Local> = time_end.into();
trace!(target: "advotrackerd", process = ?res, state = ?state, date_stop = ?datetime.to_string());
Ok(count)
Ok((count, duration))
}