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/lib.rs | 2 +- src/sqlite.rs | 18 +++++++++++++----- 2 files changed, 14 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/lib.rs b/src/lib.rs index 9ee48d4..5dd03ec 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -7,7 +7,7 @@ pub fn insert( table_name: &str, data: &mut [yaml_rust::Yaml], ) { - let table_columns = crate::sqlite::get_column_names(&dbconn, table_name); + let table_columns = crate::sqlite::get_column_names(&dbconn, table_name).unwrap(); for mut doc in data { let tx = dbconn.transaction().unwrap(); 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