langfuse_client_base/models/
trace.rs1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize, bon::Builder)]
15pub struct Trace {
16 #[serde(rename = "id")]
18 pub id: String,
19 #[serde(rename = "timestamp")]
21 pub timestamp: chrono::DateTime<chrono::FixedOffset>,
22 #[serde(rename = "name", deserialize_with = "Option::deserialize")]
24 pub name: Option<String>,
25 #[serde(
27 rename = "input",
28 default,
29 with = "::serde_with::rust::double_option",
30 skip_serializing_if = "Option::is_none"
31 )]
32 pub input: Option<Option<serde_json::Value>>,
33 #[serde(
35 rename = "output",
36 default,
37 with = "::serde_with::rust::double_option",
38 skip_serializing_if = "Option::is_none"
39 )]
40 pub output: Option<Option<serde_json::Value>>,
41 #[serde(rename = "sessionId", deserialize_with = "Option::deserialize")]
43 pub session_id: Option<String>,
44 #[serde(rename = "release", deserialize_with = "Option::deserialize")]
46 pub release: Option<String>,
47 #[serde(rename = "version", deserialize_with = "Option::deserialize")]
49 pub version: Option<String>,
50 #[serde(rename = "userId", deserialize_with = "Option::deserialize")]
52 pub user_id: Option<String>,
53 #[serde(
55 rename = "metadata",
56 default,
57 with = "::serde_with::rust::double_option",
58 skip_serializing_if = "Option::is_none"
59 )]
60 pub metadata: Option<Option<serde_json::Value>>,
61 #[serde(rename = "tags")]
63 pub tags: Vec<String>,
64 #[serde(rename = "public")]
66 pub public: bool,
67 #[serde(rename = "environment")]
69 pub environment: String,
70}
71
72impl Trace {
73 pub fn new(
74 id: String,
75 timestamp: chrono::DateTime<chrono::FixedOffset>,
76 name: Option<String>,
77 session_id: Option<String>,
78 release: Option<String>,
79 version: Option<String>,
80 user_id: Option<String>,
81 tags: Vec<String>,
82 public: bool,
83 environment: String,
84 ) -> Trace {
85 Trace {
86 id,
87 timestamp,
88 name,
89 input: None,
90 output: None,
91 session_id,
92 release,
93 version,
94 user_id,
95 metadata: None,
96 tags,
97 public,
98 environment,
99 }
100 }
101}