aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib.rs2
-rw-r--r--src/sqlite.rs18
2 files changed, 14 insertions, 6 deletions
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<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)
}