use chrono::{DateTime, NaiveDateTime, Utc};
use semver::Version;
use serde::{Deserialize, Serialize};
use crate::errors::Error;
#[derive(Deserialize, Serialize, Debug, Clone, PartialEq)]
pub struct ChangeLogEntry {
pub version: Version,
pub time: DateTime<Utc>,
pub message: String,
}
impl ChangeLogEntry {
pub fn new(version: &String, text: &String) -> Result<Self, Error> {
let mut split_text = text.split_ascii_whitespace();
let timestamp: i64 = split_text.next().unwrap().parse().unwrap();
let message = split_text.collect::<Vec<&str>>().join(" ");
Ok(Self {
version: version.parse()?,
time: DateTime::<Utc>::from_utc(NaiveDateTime::from_timestamp(timestamp, 0), Utc),
message,
})
}
}