diff options
Diffstat (limited to 'src/sqlite.rs')
| -rw-r--r-- | src/sqlite.rs | 29 | 
1 files changed, 29 insertions, 0 deletions
| diff --git a/src/sqlite.rs b/src/sqlite.rs index 8094398..15c813c 100644 --- a/src/sqlite.rs +++ b/src/sqlite.rs @@ -1,5 +1,7 @@  use rusqlite; +use std::collections::HashMap; +  /// Get the fundamental SQLite datatype for a given type name.  /// @@ -32,3 +34,30 @@ pub fn affinity(type_name: &str) -> rusqlite::types::Type {      Type::Text  } + + +#[derive(Debug)] +pub struct Zero {} + + +pub fn get_column_names(dbconn: &rusqlite::Connection) -> HashMap<String, Zero> { +    let mut column_names = HashMap::new(); + +    let mut stmt = dbconn.prepare(r#" +        SELECT "name" +        FROM pragma_table_info("people"); +    "#).unwrap(); + +    let rows = stmt.query_map( +        [], +        |row| row.get(0), +    ).unwrap(); + +    for row_result in rows { +        let row = row_result.unwrap(); + +        column_names.insert(row, Zero{}); +    } + +    column_names +} | 
