//! Error types for database operations use std::path::PathBuf; use thiserror::Error; /// Errors that can occur during database operations #[derive(Debug, Error)] pub enum DatabaseError { /// SQLite error #[error("SQLite error: {0}")] Sqlite(#[from] rusqlite::Error), /// Tokio-rusqlite error #[error("Database connection error: {0}")] Connection(#[from] tokio_rusqlite::Error), /// I/O error #[error("I/O error: {0}")] Io(#[from] std::io::Error), /// JSON serialization error #[error("JSON error: {0}")] Json(#[from] serde_json::Error), /// Protocol not found #[error("Protocol not found: {id}")] ProtocolNotFound { id: String }, /// Subject not found #[error("Subject not found: {id}")] SubjectNotFound { id: String }, /// Recording not found #[error("Recording not found: {id}")] RecordingNotFound { id: String }, /// Invalid protocol directory #[error("Invalid protocol directory: {path}")] InvalidProtocolDir { path: PathBuf }, /// Database not initialized #[error("Database not initialized")] NotInitialized, /// Duplicate entry #[error("Duplicate entry: {message}")] DuplicateEntry { message: String }, } /// Result type for database operations pub type Result = std::result::Result;