diff --git a/advotracker/src/services/import/allianzdirectcall.rs b/advotracker/src/services/import/allianzdirectcall.rs index f08c40e..fe4a80c 100644 --- a/advotracker/src/services/import/allianzdirectcall.rs +++ b/advotracker/src/services/import/allianzdirectcall.rs @@ -8,10 +8,11 @@ use chrono::{Local, DateTime}; use locales::t; use std::error::Error; +use std::collections::HashMap; use tracing::trace; //use crate::db::redis; -use crate::data; +use crate::data::{PolicyCode, PolicyDataList, PolicyData}; /// export as csv format /// https://docs.rs/csv/1.1.3/csv/cookbook/index.html @@ -43,7 +44,9 @@ pub fn export(p: &mut String, lang: &String) -> Result<(), Box> { /// save records to redis backend /// https://docs.rs/csv/1.1.3/csv/cookbook/index.html /// https://blog.burntsushi.net/csv/ -pub fn import(p: &mut String, lang: &String) -> Result> { +pub fn import(p: &mut String, data_list: &mut PolicyDataList, + policy_numbers: &mut HashMap, lang: &String) + -> Result> { use std::fs::File; use std::path::Path; use std::ffi::OsStr; @@ -87,33 +90,28 @@ pub fn import(p: &mut String, lang: &String) -> Result> { for result in csv_reader.deserialize() { // The iterator yields Result, so we check the // error here. - //let record = result?; - let _record: data::AllianzPolicyNumber = result?; + let record: PolicyData = result?; + //let record: data::AllianzPolicyNumber = result?; //println!("{:?}", record); // WIP: write to redis backend - // policy_data.push(PolicyData { - // date_inserted: Some(Utc::now().naive_utc()), - // dion: 1, - // policy_code: PolicyCode::AS, - // policy_number, - // status: Status::Active, - // }); + // append the policy_number to the HashMap + policy_numbers.insert(record.policy_number, record.policy_code); + + // push record as new vector elements + data_list.push(record); count +=1; } let dt_end: DateTime = Local::now(); let duration = dt_end.signed_duration_since(dt_start); - println!("Duration: {:#?}", duration); - //let seconds = duration.secs; - //println!("Seconds: {:#?}", seconds); + trace!(target: "advotrackerd", record_count = ?count, duration = ?duration); state = t!("state.finished", lang); res = t!("csv.import.finished", lang); trace!(target: "advotrackerd", process = ?res, state = ?state, date_stop = ?dt_end.to_string()); - //Ok(count, duration.seconds()) Ok(count) }