feature/insight-jobs #102

Merged
cameron merged 13 commits from feature/insight-jobs into master 2026-06-02 23:41:37 +00:00
2 changed files with 32 additions and 4 deletions
Showing only changes of commit cdd981fe64 - Show all commits
+31 -4
View File
@@ -193,19 +193,26 @@ pub fn connect() -> SqliteConnection {
conn
}
#[derive(Debug)]
pub struct DbError {
pub kind: DbErrorKind,
pub source: Option<String>,
}
impl DbError {
fn new(kind: DbErrorKind) -> Self {
DbError { kind }
DbError { kind, source: None }
}
/// Capture the source error message AND log it. Callers should use
/// this from `map_err` closures so the underlying Diesel/SQLite
/// error survives the conversion to `DbError`.
fn log(kind: DbErrorKind, source: impl std::fmt::Display) -> Self {
log::error!("DB {:?}: {}", kind, source);
DbError { kind }
let msg = source.to_string();
log::error!("DB {:?}: {}", kind, msg);
DbError {
kind,
source: Some(msg),
}
}
fn exists() -> Self {
@@ -213,6 +220,26 @@ impl DbError {
}
}
impl std::fmt::Debug for DbError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match &self.source {
Some(s) => write!(f, "DbError {{ kind: {:?}, source: {} }}", self.kind, s),
None => write!(f, "DbError {{ kind: {:?} }}", self.kind),
}
}
}
impl std::fmt::Display for DbError {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match &self.source {
Some(s) => write!(f, "{:?}: {}", self.kind, s),
None => write!(f, "{:?}", self.kind),
}
}
}
impl std::error::Error for DbError {}
#[derive(Debug, PartialEq)]
pub enum DbErrorKind {
AlreadyExists,
+1
View File
@@ -144,6 +144,7 @@ impl PreviewDao for TestPreviewDao {
} else {
Err(DbError {
kind: DbErrorKind::UpdateError,
source: None,
})
}
}