2022-04-16 22:09:23 +00:00
|
|
|
use log::debug;
|
|
|
|
use rusqlite::Connection;
|
|
|
|
|
|
|
|
use super::{user, Error};
|
|
|
|
|
2022-04-18 12:13:15 +00:00
|
|
|
#[derive(Debug)]
|
2022-04-16 22:09:23 +00:00
|
|
|
pub struct Database {
|
|
|
|
pub conn: Connection,
|
|
|
|
}
|
|
|
|
|
|
|
|
impl Database {
|
2022-04-17 22:07:37 +00:00
|
|
|
/// Open SQLite Database file
|
|
|
|
/// ```
|
|
|
|
/// use homedisk_utils::database::Database;
|
|
|
|
///
|
|
|
|
/// Database::open("/tmp/homedisk.db").unwrap();
|
|
|
|
/// ```
|
|
|
|
pub fn open(path: &str) -> Result<Self, Error> {
|
2022-04-16 22:09:23 +00:00
|
|
|
debug!("opening SQLite database");
|
|
|
|
|
2022-04-17 22:07:37 +00:00
|
|
|
let conn = Connection::open(path)?;
|
|
|
|
|
2022-04-16 22:09:23 +00:00
|
|
|
Ok(Self { conn })
|
|
|
|
}
|
|
|
|
|
2022-04-17 22:07:37 +00:00
|
|
|
/// Create new User
|
|
|
|
/// ```
|
|
|
|
/// use std::fs;
|
|
|
|
///
|
|
|
|
/// use rusqlite::Connection;
|
|
|
|
/// use homedisk_utils::database::{Database, User};
|
|
|
|
///
|
|
|
|
/// let db = Database { conn: Connection::open_in_memory().unwrap() };
|
|
|
|
/// let user = User::new("medzik", "SuperSecretPassword123").unwrap();
|
|
|
|
///
|
2022-04-17 22:16:32 +00:00
|
|
|
/// db.conn.execute(&fs::read_to_string("../tables.sql").unwrap(), []).unwrap();
|
2022-04-17 22:07:37 +00:00
|
|
|
///
|
|
|
|
/// db.create_user(user).unwrap();
|
|
|
|
/// ```
|
|
|
|
pub fn create_user(&self, user: user::User) -> Result<usize, Error> {
|
2022-04-16 22:09:23 +00:00
|
|
|
debug!("creating user - {}", user.username);
|
|
|
|
|
|
|
|
Ok(self.conn.execute(
|
2022-04-17 22:07:37 +00:00
|
|
|
"INSERT INTO user (id, username, password) VALUES (?1, ?2, ?3)",
|
|
|
|
[user.id, user.username, user.password],
|
2022-04-16 22:09:23 +00:00
|
|
|
)?)
|
|
|
|
}
|
|
|
|
}
|