From 09786f4d77640594f6cdd06335d10da59c526f43 Mon Sep 17 00:00:00 2001 From: davidemazzocchi Date: Fri, 27 Feb 2026 10:02:08 +0100 Subject: [PATCH] feat: encapsulate rusqlite::Error into sqlite::FailedTo (OpenConnection) --- 01.workspace/heave/src/fun/sqlite_build_statement.rs | 4 +--- 01.workspace/heave/src/fun/sqlite_init_db.rs | 3 ++- 01.workspace/heave/src/fun/sqlite_load_by_class.rs | 3 ++- 01.workspace/heave/src/fun/sqlite_load_by_filter.rs | 3 ++- 01.workspace/heave/src/fun/sqlite_load_by_id.rs | 3 ++- 01.workspace/heave/src/fun/sqlite_persist_catalog.rs | 3 ++- 01.workspace/heave/src/str/sqlite_failed_to.rs | 2 +- 7 files changed, 12 insertions(+), 9 deletions(-) diff --git a/01.workspace/heave/src/fun/sqlite_build_statement.rs b/01.workspace/heave/src/fun/sqlite_build_statement.rs index 2d3f6c8..6f6fb9b 100644 --- a/01.workspace/heave/src/fun/sqlite_build_statement.rs +++ b/01.workspace/heave/src/fun/sqlite_build_statement.rs @@ -71,9 +71,7 @@ fn from_condition( } (_, Condition::Real(_)) => return Err(FailedTo::ComposeFilter), // TEXT - (Comparison::IsExactly, Condition::Text(_)) => { - compose_fragment(name, "value_text", "=", i) - } + (Comparison::IsExactly, Condition::Text(_)) => compose_fragment(name, "value_text", "=", i), ( Comparison::StartsWith | Comparison::EndsWith | Comparison::Contains, Condition::Text(_), diff --git a/01.workspace/heave/src/fun/sqlite_init_db.rs b/01.workspace/heave/src/fun/sqlite_init_db.rs index e0c3477..2ab25dd 100644 --- a/01.workspace/heave/src/fun/sqlite_init_db.rs +++ b/01.workspace/heave/src/fun/sqlite_init_db.rs @@ -25,7 +25,8 @@ pub fn run(path: &path::Path) -> result::Result<(), FailedTo> { CREATE INDEX IF NOT EXISTS attribute_id ON attribute (id); CREATE INDEX IF NOT EXISTS attribute_entity_id ON attribute (entity_id); "#; - let connection = Connection::open(path).map_err(|_| sqlite::FailedTo::OpenConnection)?; + let connection = Connection::open(path) + .map_err(|sqlite_error| sqlite::FailedTo::OpenConnection(sqlite_error))?; connection .execute_batch(init_statement) .map_err(|sqlite_error| sqlite::FailedTo::ExecuteBatch(sqlite_error))?; 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 9b1e9ab..328ddb1 100644 --- a/01.workspace/heave/src/fun/sqlite_load_by_class.rs +++ b/01.workspace/heave/src/fun/sqlite_load_by_class.rs @@ -8,7 +8,8 @@ const SELECT_ENTITY_BY_CLASS: &str = r#" pub fn run(path: &path::Path, entity_class: &str) -> Result, FailedTo> { let mut entities = Vec::::new(); - let mut connection = Connection::open(path).map_err(|_| sqlite::FailedTo::OpenConnection)?; + let mut connection = Connection::open(path) + .map_err(|sqlite_error| sqlite::FailedTo::OpenConnection(sqlite_error))?; let mut transaction = connection .transaction() .map_err(|sqlite_error| sqlite::FailedTo::BeginTransaction(sqlite_error))?; 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 5a550b8..02ad187 100644 --- a/01.workspace/heave/src/fun/sqlite_load_by_filter.rs +++ b/01.workspace/heave/src/fun/sqlite_load_by_filter.rs @@ -3,7 +3,8 @@ use rusqlite::*; pub fn run(path: &path::Path, filter: &Filter) -> Result, FailedTo> { let mut entities = Vec::::new(); - let mut connection = Connection::open(path).map_err(|_| sqlite::FailedTo::OpenConnection)?; + let mut connection = Connection::open(path) + .map_err(|sqlite_error| sqlite::FailedTo::OpenConnection(sqlite_error))?; let mut transaction = connection .transaction() .map_err(|sqlite_error| sqlite::FailedTo::BeginTransaction(sqlite_error))?; 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 83624c3..ed51cba 100644 --- a/01.workspace/heave/src/fun/sqlite_load_by_id.rs +++ b/01.workspace/heave/src/fun/sqlite_load_by_id.rs @@ -7,7 +7,8 @@ const SELECT_ENTITY_BY_ID: &str = r#" "#; pub fn run(path: &path::Path, entity_id: &str) -> Result, FailedTo> { - let mut connection = Connection::open(path).map_err(|_| sqlite::FailedTo::OpenConnection)?; + let mut connection = Connection::open(path) + .map_err(|sqlite_error| sqlite::FailedTo::OpenConnection(sqlite_error))?; let mut transaction = connection .transaction() .map_err(|sqlite_error| sqlite::FailedTo::BeginTransaction(sqlite_error))?; diff --git a/01.workspace/heave/src/fun/sqlite_persist_catalog.rs b/01.workspace/heave/src/fun/sqlite_persist_catalog.rs index 77e5ff0..59661fb 100644 --- a/01.workspace/heave/src/fun/sqlite_persist_catalog.rs +++ b/01.workspace/heave/src/fun/sqlite_persist_catalog.rs @@ -66,7 +66,8 @@ fn write_entity(entity: &Entity, transaction: &rusqlite::Transaction) -> Result< } pub fn run(path: &path::Path, items: &HashMap) -> result::Result<(), FailedTo> { - let mut connection = Connection::open(path).map_err(|_| sqlite::FailedTo::OpenConnection)?; + let mut connection = Connection::open(path) + .map_err(|sqlite_error| sqlite::FailedTo::OpenConnection(sqlite_error))?; let transaction = connection .transaction() .map_err(|sqlite_error| sqlite::FailedTo::BeginTransaction(sqlite_error))?; diff --git a/01.workspace/heave/src/str/sqlite_failed_to.rs b/01.workspace/heave/src/str/sqlite_failed_to.rs index a7143e2..353bf43 100644 --- a/01.workspace/heave/src/str/sqlite_failed_to.rs +++ b/01.workspace/heave/src/str/sqlite_failed_to.rs @@ -14,7 +14,7 @@ pub enum FailedTo { /// Failed to execute a prepared SQL statement. ExecuteStatement(rusqlite::Error), /// Failed to open a connection to the SQLite database. - OpenConnection, + OpenConnection(rusqlite::Error), /// Failed to prepare a SQL statement for execution. PrepareStatement, }