From 8cd470b4be6128ac9f4df61c796e4568662be896 Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Sun, 13 Mar 2022 02:57:44 +0100 Subject: Yaml::to_sql(): Remove `unwrap()`s If any value extraction comes back as `None`, convert it to a SQL `Null`. --- src/yaml/sql.rs | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/yaml/sql.rs b/src/yaml/sql.rs index 1e9c903..68488d2 100644 --- a/src/yaml/sql.rs +++ b/src/yaml/sql.rs @@ -8,10 +8,22 @@ impl<'a> rusqlite::ToSql for Yaml<'a> { use rusqlite::types::ToSqlOutput; let sql_output = match self.0 { - yaml::Yaml::Real(_) => ToSqlOutput::from(self.0.as_f64().unwrap()), - yaml::Yaml::Integer(_) => ToSqlOutput::from(self.0.as_i64().unwrap()), - yaml::Yaml::String(_) => ToSqlOutput::from(self.0.as_str().unwrap()), - yaml::Yaml::Boolean(_) => ToSqlOutput::from(self.0.as_bool().unwrap()), + yaml::Yaml::Real(_) => match self.0.as_f64() { + Some(v) => ToSqlOutput::from(v), + None => ToSqlOutput::from(rusqlite::types::Null), + }, + yaml::Yaml::Integer(_) => match self.0.as_i64() { + Some(v) => ToSqlOutput::from(v), + None => ToSqlOutput::from(rusqlite::types::Null), + }, + yaml::Yaml::String(_) => match self.0.as_str() { + Some(v) => ToSqlOutput::from(v), + None => ToSqlOutput::from(rusqlite::types::Null), + }, + yaml::Yaml::Boolean(_) => match self.0.as_bool() { + Some(v) => ToSqlOutput::from(v), + None => ToSqlOutput::from(rusqlite::types::Null), + }, yaml::Yaml::Array(_) => ToSqlOutput::from(rusqlite::types::Null), yaml::Yaml::Hash(_) => ToSqlOutput::from(rusqlite::types::Null), yaml::Yaml::Alias(_) => ToSqlOutput::from(rusqlite::types::Null), -- cgit v1.2.3