aboutsummaryrefslogtreecommitdiffstats
path: root/src/yaml.rs
diff options
context:
space:
mode:
authorTeddy Wing2022-03-12 21:01:57 +0100
committerTeddy Wing2022-03-12 21:02:45 +0100
commitdb05a516596857f0e754d6cd48fe7c9669843731 (patch)
tree4ce1102b4810272ed018f7622e8877efad8588fb /src/yaml.rs
parentc487910ee09e0cfd0e5cc2ee1e6232dd7accd073 (diff)
downloadyaqlite-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.rs24
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)
+ }
+}