From 0467ef6a754ebc1661513cae5aab7763d29deab6 Mon Sep 17 00:00:00 2001 From: davidemazzocchi Date: Fri, 27 Feb 2026 09:28:34 +0100 Subject: [PATCH] feat: encapsulate rusqlite::Error into sqlite::FailedTo enum (begin transaction) --- 01.workspace/heave/src/fun/sqlite_load_by_class.rs | 2 +- 01.workspace/heave/src/fun/sqlite_load_by_filter.rs | 2 +- 01.workspace/heave/src/fun/sqlite_load_by_id.rs | 2 +- 01.workspace/heave/src/fun/sqlite_persist_catalog.rs | 2 +- 01.workspace/heave/src/str/sqlite_failed_to.rs | 4 ++-- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/01.workspace/heave/src/fun/sqlite_load_by_class.rs b/01.workspace/heave/src/fun/sqlite_load_by_class.rs index 63ff200..ba281dc 100644 --- a/01.workspace/heave/src/fun/sqlite_load_by_class.rs +++ b/01.workspace/heave/src/fun/sqlite_load_by_class.rs @@ -11,7 +11,7 @@ pub fn run(path: &path::Path, entity_class: &str) -> Result, FailedT let mut connection = Connection::open(path).map_err(|_| sqlite::FailedTo::OpenConnection)?; let mut transaction = connection .transaction() - .map_err(|_| sqlite::FailedTo::BeginTransaction)?; + .map_err(|sqlite_error| sqlite::FailedTo::BeginTransaction(sqlite_error))?; transaction.set_drop_behavior(DropBehavior::Commit); let mut statement = transaction .prepare(SELECT_ENTITY_BY_CLASS) diff --git a/01.workspace/heave/src/fun/sqlite_load_by_filter.rs b/01.workspace/heave/src/fun/sqlite_load_by_filter.rs index 11d6961..bf5536d 100644 --- a/01.workspace/heave/src/fun/sqlite_load_by_filter.rs +++ b/01.workspace/heave/src/fun/sqlite_load_by_filter.rs @@ -6,7 +6,7 @@ pub fn run(path: &path::Path, filter: &Filter) -> Result, FailedTo> let mut connection = Connection::open(path).map_err(|_| sqlite::FailedTo::OpenConnection)?; let mut transaction = connection .transaction() - .map_err(|_| sqlite::FailedTo::BeginTransaction)?; + .map_err(|sqlite_error| sqlite::FailedTo::BeginTransaction(sqlite_error))?; transaction.set_drop_behavior(DropBehavior::Commit); let select_entity_by_filter = sqlite::build::statement(filter)?; let params = sqlite::build::params(filter)?; diff --git a/01.workspace/heave/src/fun/sqlite_load_by_id.rs b/01.workspace/heave/src/fun/sqlite_load_by_id.rs index c68a340..5284df0 100644 --- a/01.workspace/heave/src/fun/sqlite_load_by_id.rs +++ b/01.workspace/heave/src/fun/sqlite_load_by_id.rs @@ -10,7 +10,7 @@ pub fn run(path: &path::Path, entity_id: &str) -> Result, FailedT let mut connection = Connection::open(path).map_err(|_| sqlite::FailedTo::OpenConnection)?; let mut transaction = connection .transaction() - .map_err(|_| sqlite::FailedTo::BeginTransaction)?; + .map_err(|sqlite_error| sqlite::FailedTo::BeginTransaction(sqlite_error))?; transaction.set_drop_behavior(DropBehavior::Commit); let mut entity = transaction .query_one(SELECT_ENTITY_BY_ID, [entity_id], sqlite::map::row_to_entity) diff --git a/01.workspace/heave/src/fun/sqlite_persist_catalog.rs b/01.workspace/heave/src/fun/sqlite_persist_catalog.rs index 45a3dbd..0931b37 100644 --- a/01.workspace/heave/src/fun/sqlite_persist_catalog.rs +++ b/01.workspace/heave/src/fun/sqlite_persist_catalog.rs @@ -69,7 +69,7 @@ pub fn run(path: &path::Path, items: &HashMap) -> result::Result let mut connection = Connection::open(path).map_err(|_| sqlite::FailedTo::OpenConnection)?; let transaction = connection .transaction() - .map_err(|_| sqlite::FailedTo::BeginTransaction)?; + .map_err(|sqlite_error| sqlite::FailedTo::BeginTransaction(sqlite_error))?; for entity in items.values().filter(|item| { item.state == EntityState::New || item.state == EntityState::Updated diff --git a/01.workspace/heave/src/str/sqlite_failed_to.rs b/01.workspace/heave/src/str/sqlite_failed_to.rs index 754bb63..ef73e36 100644 --- a/01.workspace/heave/src/str/sqlite_failed_to.rs +++ b/01.workspace/heave/src/str/sqlite_failed_to.rs @@ -1,8 +1,8 @@ /// Represents failures that can occur specifically within the SQLite implementation. -#[derive(Debug, PartialEq, PartialOrd, Eq, Ord, Clone, Copy, Hash)] +#[derive(Debug, PartialEq)] pub enum FailedTo { /// Failed to begin a database transaction. - BeginTransaction, + BeginTransaction(rusqlite::Error), /// Failed to build a SQL statement. BuildStatement, /// Failed to commit a database transaction.