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
47impl From<libsql::Error> for TracingError {
48 fn from(err: libsql::Error) -> Self {
49 TracingError::Database(err.to_string())
50 }
51}
52
53#[cfg(test)]
54mod tests {
55 use super::*;
56
57 #[test]
58 fn test_error_display() {
59 let err = TracingError::NoActiveSession;
60 assert_eq!(err.to_string(), "no active session");
61
62 let err = TracingError::Database("connection failed".to_string());
63 assert!(err.to_string().contains("connection failed"));
64 }
65}