From c7f7ffa4488734c97f0be226fa7a5e2d79ca85e5 Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Sun, 13 Mar 2022 02:46:31 +0100 Subject: get_column_names(): Remove `unwrap()`s Return a `Result` and wrap errors in a `thiserror` struct. --- src/sqlite.rs | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'src/sqlite.rs') diff --git a/src/sqlite.rs b/src/sqlite.rs index bb2c5bb..1e3aeec 100644 --- a/src/sqlite.rs +++ b/src/sqlite.rs @@ -1,8 +1,16 @@ use rusqlite; +use thiserror; use std::collections::HashMap; +#[derive(thiserror::Error, Debug)] +pub enum SqliteError { + #[error("SQL error")] + Sqlite(#[from] rusqlite::Error), +} + + /// Get the fundamental SQLite datatype for a given type name. /// /// Use the SQLite rules for type affinity described in: @@ -43,7 +51,7 @@ pub struct Zero; pub fn get_column_names( dbconn: &rusqlite::Connection, table_name: &str, -) -> HashMap { +) -> Result, SqliteError> { let mut column_names = HashMap::new(); let mut stmt = dbconn.prepare( @@ -54,18 +62,18 @@ pub fn get_column_names( "#, table_name, ), - ).unwrap(); + )?; let rows = stmt.query_map( [], |row| row.get(0), - ).unwrap(); + )?; for row_result in rows { - let row = row_result.unwrap(); + let row = row_result?; column_names.insert(row, Zero{}); } - column_names + Ok(column_names) } -- cgit v1.2.3