Skip to content
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use std::collections::HashMap;

#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct LogLine {
    #[serde(default = "default_timestamp")]
    pub timestamp: DateTime<Utc>,
    pub severity: String,
    pub message: String,
    #[serde(default = "default_service")]
    pub service: String,
    #[serde(default)]
    pub metadata: HashMap<String, serde_json::Value>,
}

fn default_timestamp() -> DateTime<Utc> {
    Utc::now()
}

fn default_service() -> String {
    "unknown".to_string()
}