@@ -99,17 +99,23 @@ impl CHSpan {
9999 let user_id = span. attributes . user_id ( ) ;
100100 let path = span. attributes . flat_path ( ) ;
101101
102- let span_input_string = span
103- . input
104- . as_ref ( )
105- . map ( |input| sanitize_string ( & input. to_string ( ) ) )
106- . unwrap_or ( String :: new ( ) ) ;
107-
108- let span_output_string = span
109- . output
110- . as_ref ( )
111- . map ( |output| sanitize_string ( & output. to_string ( ) ) )
112- . unwrap_or ( String :: new ( ) ) ;
102+ let span_input_string = if let Some ( input_url) = & span. input_url {
103+ format ! ( "<lmnr_payload_url>{}</lmnr_payload_url>" , input_url)
104+ } else {
105+ span. input
106+ . as_ref ( )
107+ . map ( |input| sanitize_string ( & input. to_string ( ) ) )
108+ . unwrap_or ( String :: new ( ) )
109+ } ;
110+
111+ let span_output_string = if let Some ( output_url) = & span. output_url {
112+ format ! ( "<lmnr_payload_url>{}</lmnr_payload_url>" , output_url)
113+ } else {
114+ span. output
115+ . as_ref ( )
116+ . map ( |output| sanitize_string ( & output. to_string ( ) ) )
117+ . unwrap_or ( String :: new ( ) )
118+ } ;
113119
114120 let trace_metadata = span. attributes . metadata ( ) . map_or ( String :: new ( ) , |m| {
115121 serde_json:: to_string ( & m) . unwrap_or_default ( )
@@ -135,18 +141,15 @@ impl CHSpan {
135141 . unwrap_or ( String :: from ( "" ) ) ,
136142 request_model : usage. request_model . clone ( ) . unwrap_or ( String :: from ( "" ) ) ,
137143 response_model : usage. response_model . clone ( ) . unwrap_or ( String :: from ( "" ) ) ,
138- session_id : session_id. unwrap_or ( String :: from ( "<null> " ) ) ,
144+ session_id : session_id. unwrap_or ( String :: from ( "" ) ) ,
139145 project_id : project_id,
140146 trace_id : span. trace_id ,
141- provider : usage
142- . provider_name
143- . clone ( )
144- . unwrap_or ( String :: from ( "<null>" ) ) ,
145- user_id : user_id. unwrap_or ( String :: from ( "<null>" ) ) ,
146- path : path. unwrap_or ( String :: from ( "<null>" ) ) ,
147+ provider : usage. provider_name . clone ( ) . unwrap_or ( String :: from ( "" ) ) ,
148+ user_id : user_id. unwrap_or ( String :: from ( "" ) ) ,
149+ path : path. unwrap_or ( String :: from ( "" ) ) ,
147150 input : span_input_string,
148151 output : span_output_string,
149- status : span. status . clone ( ) . unwrap_or ( String :: from ( "<null> " ) ) ,
152+ status : span. status . clone ( ) . unwrap_or ( String :: from ( "" ) ) ,
150153 size_bytes : size_bytes as u64 ,
151154 attributes : span. attributes . to_string ( ) ,
152155 trace_metadata,
@@ -215,3 +218,18 @@ pub async fn append_tags_to_span(
215218
216219 Ok ( ( ) )
217220}
221+
222+ pub async fn is_span_in_project (
223+ clickhouse : clickhouse:: Client ,
224+ span_id : Uuid ,
225+ project_id : Uuid ,
226+ ) -> Result < bool > {
227+ let result = clickhouse
228+ . query ( "SELECT count(*) FROM spans WHERE span_id = ? AND project_id = ?" )
229+ . bind ( span_id)
230+ . bind ( project_id)
231+ . fetch_one :: < u64 > ( )
232+ . await ?;
233+
234+ Ok ( result > 0 )
235+ }
0 commit comments