diff options
author | Teddy Wing | 2022-03-12 21:01:57 +0100 |
---|---|---|
committer | Teddy Wing | 2022-03-12 21:02:45 +0100 |
commit | db05a516596857f0e754d6cd48fe7c9669843731 (patch) | |
tree | 4ce1102b4810272ed018f7622e8877efad8588fb /src/yaml.rs | |
parent | c487910ee09e0cfd0e5cc2ee1e6232dd7accd073 (diff) | |
download | yaqlite-db05a516596857f0e754d6cd48fe7c9669843731.tar.bz2 |
Move `Yaml` newtype to a new module in library crate
Separate this code from the main binary file.
Diffstat (limited to 'src/yaml.rs')
-rw-r--r-- | src/yaml.rs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/yaml.rs b/src/yaml.rs new file mode 100644 index 0000000..1e9c903 --- /dev/null +++ b/src/yaml.rs @@ -0,0 +1,24 @@ +use yaml_rust::yaml; + + +pub struct Yaml<'a>(pub &'a yaml::Yaml); + +impl<'a> rusqlite::ToSql for Yaml<'a> { + fn to_sql(&self) -> rusqlite::Result<rusqlite::types::ToSqlOutput<'_>> { + 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::Array(_) => ToSqlOutput::from(rusqlite::types::Null), + yaml::Yaml::Hash(_) => ToSqlOutput::from(rusqlite::types::Null), + yaml::Yaml::Alias(_) => ToSqlOutput::from(rusqlite::types::Null), + yaml::Yaml::Null => ToSqlOutput::from(rusqlite::types::Null), + yaml::Yaml::BadValue => ToSqlOutput::from(rusqlite::types::Null), + }; + + Ok(sql_output) + } +} |