summaryrefslogtreecommitdiffstats
path: root/src/server/database.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/database.rs')
-rw-r--r--src/server/database.rs31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/server/database.rs b/src/server/database.rs
new file mode 100644
index 0000000..9c51997
--- /dev/null
+++ b/src/server/database.rs
@@ -0,0 +1,31 @@
1use rusqlite::Connection;
2
3pub fn init_db() -> Connection {
4 let conn = Connection::open("server.db").unwrap();
5 conn.execute(
6 "CREATE TABLE IF NOT EXISTS users (
7 username TEXT PRIMARY KEY,
8 hashed_password TEXT NOT NULL
9 )",
10 [],
11 ).unwrap();
12 conn
13}
14
15pub fn add_user(conn: &Connection, username: &str, hashed_password: &str) -> Result<(), Box<dyn std::error::Error>> {
16 conn.execute(
17 "INSERT INTO users (username, hashed_password) VALUES (?1, ?2)",
18 [username, hashed_password],
19 )?;
20 Ok(())
21}
22
23pub fn get_hashed_password(conn: &Connection, username: &str) -> Option<String> {
24 let mut stmt = conn.prepare("SELECT hashed_password FROM users WHERE username = ?1").unwrap();
25 let mut rows = stmt.query([username]).unwrap();
26 if let Ok(Some(row)) = rows.next() {
27 row.get(0).ok()
28 } else {
29 None
30 }
31}