aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTeddy Wing2022-03-13 02:46:31 +0100
committerTeddy Wing2022-03-13 02:46:31 +0100
commitc7f7ffa4488734c97f0be226fa7a5e2d79ca85e5 (patch)
treefb1ddf25e17a6fd26bdff147c6fac2fb19d2a5ff
parent2219c6dbd34903c1d32641cec56063b621d44c21 (diff)
downloadyaqlite-c7f7ffa4488734c97f0be226fa7a5e2d79ca85e5.tar.bz2
get_column_names(): Remove `unwrap()`s
Return a `Result` and wrap errors in a `thiserror` struct.
-rw-r--r--Cargo.lock56
-rw-r--r--Cargo.toml1
-rw-r--r--src/lib.rs2
-rw-r--r--src/sqlite.rs18
4 files changed, 71 insertions, 6 deletions
diff --git a/Cargo.lock b/Cargo.lock
index b53833a..e4177fd 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -107,6 +107,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "58893f751c9b0412871a09abd62ecd2a00298c6c83befa223ef98c52aef40cbe"
[[package]]
+name = "proc-macro2"
+version = "1.0.36"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c7342d5883fbccae1cc37a2353b09c87c9b0f3afd73f5fb9bba687a1f733b029"
+dependencies = [
+ "unicode-xid",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "864d3e96a899863136fc6e99f3d7cae289dafe43bf2c5ac19b70df7210c0a145"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
name = "rusqlite"
version = "0.27.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -128,6 +146,43 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83"
[[package]]
+name = "syn"
+version = "1.0.86"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8a65b3f4ffa0092e9887669db0eae07941f023991ab58ea44da8fe8e2d511c6b"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-xid",
+]
+
+[[package]]
+name = "thiserror"
+version = "1.0.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.30"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "unicode-xid"
+version = "0.2.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3"
+
+[[package]]
name = "vcpkg"
version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -159,5 +214,6 @@ name = "yaqlite"
version = "0.0.1"
dependencies = [
"rusqlite",
+ "thiserror",
"yaml-rust",
]
diff --git a/Cargo.toml b/Cargo.toml
index bd9d94f..e015c77 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -5,4 +5,5 @@ edition = "2021"
[dependencies]
rusqlite = "0.27.0"
+thiserror = "1.0.30"
yaml-rust = "0.4.5"
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)
}