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: String,
22 #[serde(
24 rename = "name",
25 default,
26 with = "::serde_with::rust::double_option",
27 skip_serializing_if = "Option::is_none"
28 )]
29 pub name: Option<Option<String>>,
30 #[serde(
32 rename = "input",
33 default,
34 with = "::serde_with::rust::double_option",
35 skip_serializing_if = "Option::is_none"
36 )]
37 pub input: Option<Option<serde_json::Value>>,
38 #[serde(
40 rename = "output",
41 default,
42 with = "::serde_with::rust::double_option",
43 skip_serializing_if = "Option::is_none"
44 )]
45 pub output: Option<Option<serde_json::Value>>,
46 #[serde(
48 rename = "sessionId",
49 default,
50 with = "::serde_with::rust::double_option",
51 skip_serializing_if = "Option::is_none"
52 )]
53 pub session_id: Option<Option<String>>,
54 #[serde(
56 rename = "release",
57 default,
58 with = "::serde_with::rust::double_option",
59 skip_serializing_if = "Option::is_none"
60 )]
61 pub release: Option<Option<String>>,
62 #[serde(
64 rename = "version",
65 default,
66 with = "::serde_with::rust::double_option",
67 skip_serializing_if = "Option::is_none"
68 )]
69 pub version: Option<Option<String>>,
70 #[serde(
72 rename = "userId",
73 default,
74 with = "::serde_with::rust::double_option",
75 skip_serializing_if = "Option::is_none"
76 )]
77 pub user_id: Option<Option<String>>,
78 #[serde(
80 rename = "metadata",
81 default,
82 with = "::serde_with::rust::double_option",
83 skip_serializing_if = "Option::is_none"
84 )]
85 pub metadata: Option<Option<serde_json::Value>>,
86 #[serde(rename = "tags")]
88 pub tags: Vec<String>,
89 #[serde(rename = "public")]
91 pub public: bool,
92 #[serde(rename = "environment")]
94 pub environment: String,
95}
96
97impl Trace {
98 pub fn new(
99 id: String,
100 timestamp: String,
101 tags: Vec<String>,
102 public: bool,
103 environment: String,
104 ) -> Trace {
105 Trace {
106 id,
107 timestamp,
108 name: None,
109 input: None,
110 output: None,
111 session_id: None,
112 release: None,
113 version: None,
114 user_id: None,
115 metadata: None,
116 tags,
117 public,
118 environment,
119 }
120 }
121}