synth_ai_core/tracing/
error.rs1use thiserror::Error;
4
5#[derive(Debug, Error)]
7pub enum TracingError {
8 #[error("database error: {0}")]
10 Database(String),
11
12 #[error("no active session")]
14 NoActiveSession,
15
16 #[error("no active timestep")]
18 NoActiveTimestep,
19
20 #[error("session already active: {0}")]
22 SessionAlreadyActive(String),
23
24 #[error("invalid state: {0}")]
26 InvalidState(String),
27
28 #[error("serialization error: {0}")]
30 Serialization(String),
31
32 #[error("storage not initialized")]
34 NotInitialized,
35
36 #[error("internal error: {0}")]
38 Internal(String),
39}
40
41impl From<serde_json::Error> for TracingError {
42 fn from(err: serde_json::Error) -> Self {
43 TracingError::Serialization(err.to_string())
44 }
45}
46
47#[cfg(feature = "libsql")]
48impl From<libsql::Error> for TracingError {
49 fn from(err: libsql::Error) -> Self {
50 TracingError::Database(err.to_string())
51 }
52}
53
54#[cfg(test)]
55mod tests {
56 use super::*;
57
58 #[test]
59 fn test_error_display() {
60 let err = TracingError::NoActiveSession;
61 assert_eq!(err.to_string(), "no active session");
62
63 let err = TracingError::Database("connection failed".to_string());
64 assert!(err.to_string().contains("connection failed"));
65 }
66}