aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/db/routines.rs59
1 files changed, 57 insertions, 2 deletions
diff --git a/src/db/routines.rs b/src/db/routines.rs
index 0827d24..884944d 100644
--- a/src/db/routines.rs
+++ b/src/db/routines.rs
@@ -1,6 +1,61 @@
-fn modify_account_status() { }
+use rusqlite::{params, Connection, Result};
+use crate::db::tables::SerialNumbers;
-fn delete_account() { }
+#[repr(i32)] #[derive(Debug, PartialEq)]
+enum AccountStatus {
+ AccountInactive = 0,
+ AccountActive = 1,
+}
+
+fn modify_account_status(username: &str, status: AccountStatus) -> Result<()> {
+ let connection = Connection::open("worlds.db")?;
+
+ // language=SQLite
+ connection.execute(
+ "UPDATE user_registration \
+ SET account_status = (?1) \
+ where username = '(?2)'",
+ params![status as i32, username]
+ )?;
+
+ Ok(())
+}
+
+fn delete_account(username: &str) -> Result<()> {
+ let connection = Connection::open("worlds.db")?;
+
+ // Get serial_number from `username`'s row.
+ // language=SQLite
+ connection.query_row(
+ "SELECT * FROM serial_numbers WHERE username = '(?1)'",
+ params![username],
+ |row| row.get(0)
+ );
+
+ let mut row = connection.prepare(
+ "SELECT * \
+ FROM serial_numbers \
+ WHERE username = '(?1)';"
+ )?;
+ let row_iter = row.query_map(params![username], |row| {
+ Ok(SerialNumbers {
+ serial_number: row.get(0)?,
+ user_name: row.get(1)?,
+ serial_status: row.get(2)?,
+ })
+ })?;
+
+ // Reset serial number so it can be reused.
+ // language=SQLite
+ connection.execute(
+ "UPDATE serial_numbers \
+ SET username = 'none', serial_status = 0 \
+ WHERE serial_number = '(?1)'",
+ params![row_iter.]
+ )?;
+
+ Ok(())
+}
fn set_account_host() { }