1use roboticus_core::error::{RoboticusError, Result};
2
3pub trait DbResultExt<T> {
5 fn db_err(self) -> Result<T>;
6}
7
8impl<T, E: std::fmt::Display> DbResultExt<T> for std::result::Result<T, E> {
9 fn db_err(self) -> Result<T> {
10 self.map_err(|e| RoboticusError::Database(e.to_string()))
11 }
12}
13
14#[cfg(test)]
15mod tests {
16 use super::*;
17
18 #[test]
19 fn db_result_ext_converts_error() {
20 let err: std::result::Result<(), &str> = Err("test error");
21 let converted = err.db_err();
22 assert!(converted.is_err());
23 match converted.unwrap_err() {
24 RoboticusError::Database(msg) => assert_eq!(msg, "test error"),
25 other => panic!("Expected Database, got {:?}", other),
26 }
27 }
28}