diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib.rs | 21 | ||||
| -rw-r--r-- | src/main.rs | 2 | ||||
| -rw-r--r-- | src/sqlite.rs | 10 | ||||
| -rw-r--r-- | src/yaml.rs | 9 | 
4 files changed, 18 insertions, 24 deletions
| @@ -2,20 +2,29 @@ pub mod sqlite;  pub mod yaml; +#[derive(thiserror::Error, Debug)] +pub enum Error { +    #[error("SQL error")] +    Sqlite(#[from] rusqlite::Error), +} + +  pub fn insert(      dbconn: &mut rusqlite::Connection,      table_name: &str,      data: &mut [yaml_rust::Yaml], -) { -    let table_columns = crate::sqlite::get_column_names(&dbconn, table_name).unwrap(); +) -> Result<(), Error> { +    let table_columns = crate::sqlite::get_column_names(&dbconn, table_name)?;      for mut doc in data { -        let tx = dbconn.transaction().unwrap(); +        let tx = dbconn.transaction()?; -        crate::yaml::extract(&mut doc, &tx, &table_name, &table_columns).unwrap(); +        crate::yaml::extract(&mut doc, &tx, &table_name, &table_columns)?; -        tx.commit().unwrap(); +        tx.commit()?;      } + +    Ok(())  } @@ -48,7 +57,7 @@ mod tests {          let mut data = yaml_rust::YamlLoader::load_from_str(&yaml_str).unwrap(); -        insert(&mut conn, "test", &mut data); +        insert(&mut conn, "test", &mut data).unwrap();          {              let mut stmt = conn.prepare(r#" diff --git a/src/main.rs b/src/main.rs index 0ac5a26..0ec2724 100644 --- a/src/main.rs +++ b/src/main.rs @@ -13,7 +13,7 @@ fn main() {      let mut yaml_data = yaml::YamlLoader::load_from_str(&text_data).unwrap(); -    yaqlite::insert(&mut dbconn, "people", &mut yaml_data); +    yaqlite::insert(&mut dbconn, "people", &mut yaml_data).unwrap();      dbg!(yaml_data); diff --git a/src/sqlite.rs b/src/sqlite.rs index 1e3aeec..ba3c19d 100644 --- a/src/sqlite.rs +++ b/src/sqlite.rs @@ -1,16 +1,8 @@  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: @@ -51,7 +43,7 @@ pub struct Zero;  pub fn get_column_names(      dbconn: &rusqlite::Connection,      table_name: &str, -) -> Result<HashMap<String, Zero>, SqliteError> { +) -> Result<HashMap<String, Zero>, crate::Error> {      let mut column_names = HashMap::new();      let mut stmt = dbconn.prepare( diff --git a/src/yaml.rs b/src/yaml.rs index b7cecad..0acaf59 100644 --- a/src/yaml.rs +++ b/src/yaml.rs @@ -9,13 +9,6 @@ mod sql;  pub use sql::*; -#[derive(thiserror::Error, Debug)] -pub enum YamlError { -    #[error("SQL error")] -    Sqlite(#[from] rusqlite::Error), -} - -  // TODO: Separate functions to get a list of YAML hashes, and insert hashes into  // the database.  pub fn extract( @@ -23,7 +16,7 @@ pub fn extract(      tx: &rusqlite::Transaction,      table_name: &str,      table_columns: &HashMap<String, crate::sqlite::Zero>, -) -> Result<(), YamlError> { +) -> Result<(), crate::Error> {      match doc {          yaml::Yaml::Array(ref mut array) => {              for yaml_value in array { | 
