]> git.seodisparate.com - EN605.607.81.SP22_ASDM_Project/commitdiff
backend: Some refactoring
authorStephen Seo <seo.disparate@gmail.com>
Tue, 29 Mar 2022 08:10:12 +0000 (17:10 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Tue, 29 Mar 2022 08:10:12 +0000 (17:10 +0900)
Reuse "check if player exists" fn where needed. Also, the same fn was
refactored to handle using an existing DB Connection.

back_end/src/db_handler.rs

index 52453c63387b91c280543e570d367c8b203fb408..f95dcddaa0e67f92a15e3e69c65aac523160dbb1 100644 (file)
@@ -53,18 +53,18 @@ impl DBHandler {
                 }
                 let conn = conn_result.unwrap();
                 loop {
-                    let stmt_result = conn.prepare("SELECT id FROM players WHERE id = ?;");
-                    if let Err(e) = stmt_result {
-                        println!("Failed to create sqlite statement: {:?}", e);
-                        self.shutdown_tx.send(()).ok();
-                        return true;
-                    }
-                    let mut stmt = stmt_result.unwrap();
-                    match stmt.query_row([player_id], |_row| Ok(())) {
-                        Ok(_) => {
+                    let exists_result = self.check_if_player_exists(Some(&conn), player_id);
+                    if let Ok(exists) = exists_result {
+                        if exists {
                             player_id = thread_rng().gen();
+                        } else {
+                            break;
                         }
-                        Err(_) => break,
+                    } else {
+                        let error = exists_result.unwrap_err();
+                        println!("Failed to check if player exists in db: {:?}", error);
+                        self.shutdown_tx.send(()).ok();
+                        return true;
                     }
                 }
                 let insert_result = conn.execute(
@@ -243,7 +243,7 @@ impl DBHandler {
 
     fn check_if_player_is_paired(&self, player_id: u32) -> Result<CheckPairingType, String> {
         {
-            let player_exists_result = self.check_if_player_exists(player_id);
+            let player_exists_result = self.check_if_player_exists(None, player_id);
             if player_exists_result.is_err() || !player_exists_result.unwrap() {
                 // player doesn't exist
                 return Ok((false, false, true));
@@ -271,17 +271,24 @@ impl DBHandler {
         }
     }
 
-    fn check_if_player_exists(&self, player_id: u32) -> Result<bool, String> {
-        let conn = self.get_conn(DBFirstRun::NotFirstRun)?;
-
-        let check_player_row =
-            conn.query_row("SELECT id FROM players WHERE id = ?;", [player_id], |row| {
-                row.get::<usize, u32>(0)
-            });
-        if let Ok(_id) = check_player_row {
-            Ok(true)
+    fn check_if_player_exists(
+        &self,
+        conn: Option<&Connection>,
+        player_id: u32,
+    ) -> Result<bool, String> {
+        if let Some(conn) = conn {
+            let check_player_row =
+                conn.query_row("SELECT id FROM players WHERE id = ?;", [player_id], |row| {
+                    row.get::<usize, u32>(0)
+                });
+            if let Ok(_id) = check_player_row {
+                Ok(true)
+            } else {
+                Ok(false)
+            }
         } else {
-            Ok(false)
+            let conn = self.get_conn(DBFirstRun::NotFirstRun)?;
+            self.check_if_player_exists(Some(&conn), player_id)
         }
     }
 }