diff --git a/src/lib/audit.rs b/src/lib/audit.rs index e9c7374d3..f18166eb8 100644 --- a/src/lib/audit.rs +++ b/src/lib/audit.rs @@ -52,6 +52,19 @@ macro_rules! audit_segment { }}; } + +macro_rules! try_audit { + ($audit:ident, $result:expr, $logFormat:expr, $errorType:expr) => { + match $result { + Ok(v) => v, + Err(e) => { + audit_log!($audit, $logFormat, e); + return Err($errorType); + } + } + }; +} + #[derive(Serialize, Deserialize)] enum AuditEvent { Log(AuditLog), diff --git a/src/lib/be/mod.rs b/src/lib/be/mod.rs index 886d95a79..a4b73d311 100644 --- a/src/lib/be/mod.rs +++ b/src/lib/be/mod.rs @@ -391,13 +391,8 @@ impl BackendWriteTransaction { .conn .backup(rusqlite::DatabaseName::Main, dstPath, None); - match result { - Ok(_) => Ok(()), - Err(e) => { - audit_log!(audit, "Error in sqlite {:?}", e); - Err(OperationError::SQLiteError) - } - } + try_audit!(audit, result, "Error in sqlite {:?}", OperationError::SQLiteError); + Ok(()) } // Should this be offline only?