use chrono::{DateTime, Utc};
#[derive(Debug, Clone)]
pub struct AuditFileData {
pub config: AuditFileConfig,
pub entries: Vec<AuditEntryRecord>,
}
impl AuditFileData {
pub fn new(config: AuditFileConfig) -> Self {
AuditFileData { config, entries: Vec::new() }
}
}
impl Default for AuditFileData {
fn default() -> Self {
Self::new(AuditFileConfig::default())
}
}
#[derive(Debug, Clone)]
pub struct AuditFileConfig {
pub source_file: String,
pub max_entries: usize,
pub format: String,
pub created: DateTime<Utc>,
}
impl AuditFileConfig {
pub fn new(source_file: String, max_entries: usize) -> Self {
AuditFileConfig {
source_file,
max_entries,
format: "structured".to_string(),
created: Utc::now(),
}
}
}
impl Default for AuditFileConfig {
fn default() -> Self {
Self::new(String::new(), 100)
}
}
#[derive(Debug, Clone)]
pub struct AuditEntryRecord {
pub index: usize,
pub compilation_id: String,
pub timestamp: DateTime<Utc>,
pub source_checksum: String,
pub status: String,
pub modules_executed: Vec<String>,
pub execution_time_ms: f64,
pub changes_summary: Option<String>,
}
impl AuditEntryRecord {
pub fn new() -> Self {
AuditEntryRecord {
index: 0,
compilation_id: String::new(),
timestamp: Utc::now(),
source_checksum: String::new(),
status: "SUCCESS".to_string(),
modules_executed: Vec::new(),
execution_time_ms: 0.0,
changes_summary: None,
}
}
}
impl Default for AuditEntryRecord {
fn default() -> Self { Self::new() }
}