diff options
author | Teddy Wing | 2022-03-12 21:50:13 +0100 |
---|---|---|
committer | Teddy Wing | 2022-03-12 21:50:13 +0100 |
commit | f4d5d7ee9897ed59cf83313774d160c832c091f3 (patch) | |
tree | 0c044eb7e5d139f8b2ca5f940fabe56b0573ef2f /src/yaml/sql.rs | |
parent | 63be98db7cb8c48c77dc634ad092d4fc077e3381 (diff) | |
download | yaqlite-f4d5d7ee9897ed59cf83313774d160c832c091f3.tar.bz2 |
Move `yaqlite::yaml` to `yaqlite::yaml::sql`
Want to use `yaqlite::yaml` for the YAML extraction function.
Diffstat (limited to 'src/yaml/sql.rs')
-rw-r--r-- | src/yaml/sql.rs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/yaml/sql.rs b/src/yaml/sql.rs new file mode 100644 index 0000000..1e9c903 --- /dev/null +++ b/src/yaml/sql.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) + } +} |