1use chrono::{DateTime, Utc};
2use serde::{Deserialize, Serialize};
3
4#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
5pub struct SpanRecord {
6 pub trace_id: String,
7 pub span_id: String,
8 pub parent_span_id: Option<String>,
9 pub service: String,
10 pub name: String,
11 pub start_ts: DateTime<Utc>,
12 pub end_ts: DateTime<Utc>,
13 pub status: String,
14 pub attrs_json: String,
15 pub events_json: String,
16}
17
18impl SpanRecord {
19 pub fn duration_ms(&self) -> i64 {
20 (self.end_ts - self.start_ts).num_milliseconds().max(0)
21 }
22}