use thiserror::Error;
#[derive(Debug, Error)]
#[non_exhaustive]
pub enum StorageError {
#[error("I/O error: {0}")]
Io(#[from] std::io::Error),
#[error("JSON error: {0}")]
Json(#[from] serde_json::Error),
#[error("SQLite error: {0}")]
Sqlite(#[from] rusqlite::Error),
#[error("Cannot determine Git first commit: {0}")]
GitFirstCommit(String),
#[error("Migration failed (version {from} → {to}): {reason}")]
Migration {
from: u32,
to: u32,
reason: String,
},
#[error("Storage directory not writable: {path}")]
NotWritable {
path: String,
},
#[error("Invalid config at {path}: {reason}")]
InvalidConfig {
path: String,
reason: String,
},
#[error("Env var error: {0}")]
Env(#[from] std::env::VarError),
}