summaryrefslogtreecommitdiff
path: root/src/db.rs
blob: e9a5d1fa233b7adc1f602932103fc3cebae4fcf5 (plain)
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
use rusqlite::{Connection};
use std;
use auth::HashedPassword;

type Result<T> = std::result::Result<T, String>;

fn is_initialized(conn: &mut Connection) -> Result<bool> {
    Ok(false)
}

pub fn init(conn: &mut Connection) -> Result<()> {
    if !is_initialized(conn)? {
        info!("Initializing db...");
        conn.execute_batch("
            BEGIN;
            CREATE TABLE IF NOT EXISTS users
              (username TEXT PRIMARY KEY, salt TEXT, passwd TEXT);
            COMMIT;
        ").unwrap();
    }
    Ok(())
}

pub fn insert_user(conn: &mut Connection,
                   username: &str,
                   password: &HashedPassword) -> Result<()> {
    conn.execute("INSERT INTO users (username, salt, passwd)
                  VALUES (?1, ?2, ?3)",
                 &[&username, &password.salt, &password.enc]).unwrap();
    Ok(())
}