diff --git a/src/batch_queue/mod.rs b/src/batch_queue/mod.rs index d504e11..cffdeaa 100644 --- a/src/batch_queue/mod.rs +++ b/src/batch_queue/mod.rs @@ -1130,6 +1130,7 @@ mod tests { core_count: None, entry_data: "{}".to_string(), context: None, + handled: None, created_at: Utc::now(), }), tracking: None, diff --git a/src/handler/mod.rs b/src/handler/mod.rs index 6f6fe2f..104966c 100644 --- a/src/handler/mod.rs +++ b/src/handler/mod.rs @@ -660,6 +660,7 @@ pub async fn insert_error_entries( core_count: params.details.core_count, entry_data: params.details.entry_data, context: params.context, + handled: data.handled, created_at, }; diff --git a/src/models.rs b/src/models.rs index 11ff768..8147f7e 100644 --- a/src/models.rs +++ b/src/models.rs @@ -44,6 +44,7 @@ pub struct ErrorTracking { pub session_id: Option, #[serde(default, rename = "buildId")] pub build_id: Option, + pub handled: Option, } #[derive(Debug, Serialize, Deserialize)] @@ -116,6 +117,21 @@ mod tests { let errors = req.errors.unwrap(); assert_eq!(errors.len(), 1); assert_eq!(errors[0].error.error, "Error"); + assert_eq!(errors[0].handled, None); assert_eq!(req.session_id, Some("mkqsr2zu-rhhe8v3j".to_string())); } + + #[test] + fn test_error_tracking_handled_parsing() { + let json = r#"{ + "hash": "err_3d39cc9f28fb81e8b7064481c7deb8c0bb349cb0877558cc73b677c1fb9a704d", + "error": "Error", + "message": "Uncaught Error: Render error", + "handled": true + }"#; + + let result = serde_json::from_str::(json); + assert!(result.is_ok(), "Failed to parse: {:?}", result.err()); + assert_eq!(result.unwrap().handled, Some(true)); + } } diff --git a/src/tinybird.rs b/src/tinybird.rs index a3aa121..5452651 100644 --- a/src/tinybird.rs +++ b/src/tinybird.rs @@ -100,6 +100,7 @@ pub struct ErrorTrackingRow { pub core_count: Option, pub entry_data: String, pub context: Option, + pub handled: Option, #[serde(with = "chrono::serde::ts_milliseconds")] pub created_at: DateTime, }