use chrono::{DateTime, Utc};
use serde::Serialize;
use std::net::IpAddr;
use uuid::Uuid;
#[derive(Debug, Clone, Serialize)]
pub struct AuditEvent {
pub user_id: Option<Uuid>,
pub action: String,
pub ip: Option<IpAddr>,
pub method: Option<String>,
pub path: Option<String>,
pub status: Option<i16>,
pub latency_ms: Option<i32>,
pub metadata: Option<serde_json::Value>,
pub service_name: String,
pub ts: DateTime<Utc>,
}
impl AuditEvent {
pub fn new(action: impl Into<String>, service_name: impl Into<String>) -> Self {
Self {
user_id: None,
action: action.into(),
ip: None,
method: None,
path: None,
status: None,
latency_ms: None,
metadata: None,
service_name: service_name.into(),
ts: Utc::now(),
}
}
}