Documentation
use chrono::{DateTime, NaiveDateTime, NaiveTime, TimeZone, Timelike, Utc};
use std::time::SystemTime;
use ring::digest::{self, Digest};

pub fn string_to_systemtime(date_time_str: &str) -> Result<SystemTime, chrono::ParseError> {
    let naive_date_time: NaiveDateTime =
        NaiveDateTime::parse_from_str(date_time_str, "%Y-%m-%d %H:%M:%S")?;

    let utc_date_time: DateTime<Utc> = Utc.from_utc_datetime(&naive_date_time);

    let system_time = utc_date_time.into();

    Ok(system_time)
}


pub fn compute_sha256(data: &[u8]) -> String {
    let binding = digest::digest(&digest::SHA256, data);
    let actual = binding.as_ref();
    vec_to_hex_string(actual)
}

fn vec_to_hex_string(vec: &[u8]) -> String {
    hex::encode(vec)
}