diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/lib.rs | 2 | ||||
-rw-r--r-- | src/sqlite.rs | 18 |
2 files changed, 14 insertions, 6 deletions
@@ -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<String, Zero> { +) -> Result<HashMap<String, Zero>, 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) } |