diff options
Diffstat (limited to 'src/db.rs')
-rw-r--r-- | src/db.rs | 14 |
1 files changed, 13 insertions, 1 deletions
@@ -2,9 +2,12 @@ use rusqlite::{Connection}; use std; use auth::HashedPassword; +// TODO Replace the unwraps in this file with a custom error type. + type Result<T> = std::result::Result<T, String>; fn is_initialized(conn: &mut Connection) -> Result<bool> { + // We just initialize every time for now. Ok(false) } @@ -21,7 +24,7 @@ pub fn init(conn: &mut Connection) -> Result<()> { Ok(()) } -pub fn insert_user(conn: &mut Connection, +pub fn insert_user(conn: &Connection, username: &str, password: &HashedPassword) -> Result<()> { conn.execute("INSERT INTO users (username, salt, passwd) @@ -29,3 +32,12 @@ pub fn insert_user(conn: &mut Connection, &[&username, &password.salt, &password.enc]).unwrap(); Ok(()) } + +pub fn lookup_user(conn: &Connection, + username: &str) -> Result<Option<HashedPassword>> { + let mut stmt = conn.prepare("SELECT salt, passwd FROM users WHERE username = ?").unwrap(); + let result = stmt.query_map(&[&username], |row| { + HashedPassword {salt: row.get(0), enc: row.get(1)} + }).unwrap().map(|v| v.unwrap()).next(); + Ok(result) +} |