use crate::paths::Paths;
use std::fs::OpenOptions;
use std::io::Write;
pub fn emit(paths: &Paths, event: &str, fields: serde_json::Value) {
let mut obj = serde_json::Map::new();
obj.insert(
"ts".into(),
serde_json::Value::String(chrono::Utc::now().format("%Y-%m-%dT%H:%M:%SZ").to_string()),
);
obj.insert("event".into(), serde_json::Value::String(event.to_string()));
if let serde_json::Value::Object(extra) = fields {
for (k, v) in extra {
obj.insert(k, v);
}
}
let line = serde_json::Value::Object(obj).to_string();
if let Ok(mut f) = OpenOptions::new()
.create(true)
.append(true)
.open(paths.data_dir.join("events.jsonl"))
{
let _ = writeln!(f, "{line}");
}
}