aboutsummaryrefslogtreecommitdiffstats
path: root/src/yaml/sql.rs
diff options
context:
space:
mode:
authorTeddy Wing2022-03-12 21:50:13 +0100
committerTeddy Wing2022-03-12 21:50:13 +0100
commitf4d5d7ee9897ed59cf83313774d160c832c091f3 (patch)
tree0c044eb7e5d139f8b2ca5f940fabe56b0573ef2f /src/yaml/sql.rs
parent63be98db7cb8c48c77dc634ad092d4fc077e3381 (diff)
downloadyaqlite-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.rs24
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)
+ }
+}