From ea5e7d336719571e51ef14478ab603e71126e3d8 Mon Sep 17 00:00:00 2001 From: salmonik Date: Wed, 28 Oct 2026 22:28:05 +0100 Subject: v0.2.2: split client/server logic into the library --- src/bin/server/database.rs | 74 ---------------------------------------------- 1 file changed, 74 deletions(-) delete mode 100644 src/bin/server/database.rs (limited to 'src/bin/server/database.rs') diff --git a/src/bin/server/database.rs b/src/bin/server/database.rs deleted file mode 100644 index c73aec5..0000000 --- a/src/bin/server/database.rs +++ /dev/null @@ -1,74 +0,0 @@ -use rusqlite::Connection; - -pub fn init_db(conn: &Connection) { - conn.execute( - "CREATE TABLE IF NOT EXISTS users ( - username TEXT PRIMARY KEY, - hashed_password TEXT NOT NULL, - account_id INTEGER UNIQUE, - balance INTEGER DEFAULT 1000 - )", - [], - ) - .unwrap(); - // Add column if not exists (for migration) - let _ = conn.execute("ALTER TABLE users ADD COLUMN account_id INTEGER UNIQUE", []); - let _ = conn.execute( - "ALTER TABLE users ADD COLUMN balance INTEGER DEFAULT 1000", - [], - ); -} - -pub fn add_user( - conn: &Connection, - username: &str, - hashed_password: &str, -) -> Result<(), Box> { - loop { - let account_id: u32 = rand::random::(); - match conn.execute( - "INSERT INTO users (username, hashed_password, account_id, balance) VALUES (?1, ?2, ?3, ?4)", - [username, hashed_password, &account_id.to_string(), "1000"], - ) { - Ok(_) => break, - Err(_) => continue, // Retry if account_id conflict - } - } - Ok(()) -} - -pub fn get_hashed_password(conn: &Connection, username: &str) -> Option { - let mut stmt = conn - .prepare("SELECT hashed_password FROM users WHERE username = ?1") - .unwrap(); - let mut rows = stmt.query([username]).unwrap(); - if let Ok(Some(row)) = rows.next() { - row.get(0).ok() - } else { - None - } -} - -pub fn get_account_id(conn: &Connection, username: &str) -> Option { - let mut stmt = conn - .prepare("SELECT account_id FROM users WHERE username = ?1") - .unwrap(); - let mut rows = stmt.query([username]).unwrap(); - if let Ok(Some(row)) = rows.next() { - Some(row.get::<_, u32>(0).ok()?) - } else { - None - } -} - -pub fn get_balance(conn: &Connection, username: &str) -> Option { - let mut stmt = conn - .prepare("SELECT balance FROM users WHERE username = ?1") - .unwrap(); - let mut rows = stmt.query([username]).unwrap(); - if let Ok(Some(row)) = rows.next() { - Some(row.get::<_, i64>(0).ok()?) - } else { - None - } -} -- cgit v1.2.3