use chrono::{DateTime, Utc};
pub type NetabaseDateTime = DateTime<Utc>;
pub trait NetabaseDateTimeExt {
fn netabase_now() -> Self;
}
impl NetabaseDateTimeExt for DateTime<Utc> {
fn netabase_now() -> Self {
Utc::now()
}
}
pub use chrono;
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_netabase_datetime_creation() {
let now: NetabaseDateTime = Utc::now();
let now_chrono = Utc::now();
let diff = (now.timestamp() - now_chrono.timestamp()).abs();
assert!(diff < 2, "Timestamps should be within 2 seconds");
}
#[test]
fn test_netabase_datetime_trait() {
let now = DateTime::<Utc>::netabase_now();
let now_chrono = Utc::now();
let diff = (now.timestamp() - now_chrono.timestamp()).abs();
assert!(diff < 2, "Timestamps should be within 2 seconds");
}
#[test]
fn test_netabase_datetime_methods() {
let dt: NetabaseDateTime = Utc::now();
let _timestamp = dt.timestamp();
let _rfc3339 = dt.to_rfc3339();
}
#[test]
fn test_netabase_datetime_type_alias() {
let dt: NetabaseDateTime = Utc::now();
let dt2: DateTime<Utc> = dt;
assert_eq!(dt.timestamp(), dt2.timestamp());
}
}