1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
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(_) => 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),
yaml::Yaml::Null => ToSqlOutput::from(rusqlite::types::Null),
yaml::Yaml::BadValue => ToSqlOutput::from(rusqlite::types::Null),
};
Ok(sql_output)
}
}
|