diff options
Diffstat (limited to 'src/sqlite.rs')
| -rw-r--r-- | src/sqlite.rs | 18 | 
1 files changed, 13 insertions, 5 deletions
| 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)  } | 
