From 9f97a6cb431f5c411d89b107deb4ec9f666aa439 Mon Sep 17 00:00:00 2001 From: projectmoon Date: Tue, 18 May 2021 14:27:15 +0000 Subject: [PATCH] Implement variable count; fix listing all variables returning values for all users. --- sqlx-data.json | 66 ++++++++++++++++++++++++-------------- src/db/sqlite/variables.rs | 14 ++++++-- 2 files changed, 54 insertions(+), 26 deletions(-) diff --git a/sqlx-data.json b/sqlx-data.json index 835daf1..125b734 100644 --- a/sqlx-data.json +++ b/sqlx-data.json @@ -42,6 +42,30 @@ ] } }, + "59313c67900a1a9399389720b522e572f181ae503559cd2b49d6305acb9e2207": { + "query": "SELECT key, value as \"value: i32\" FROM user_variables\n WHERE room_id = ? AND user_id = ?", + "describe": { + "columns": [ + { + "name": "key", + "ordinal": 0, + "type_info": "Text" + }, + { + "name": "value: i32", + "ordinal": 1, + "type_info": "Int64" + } + ], + "parameters": { + "Right": 2 + }, + "nullable": [ + false, + false + ] + } + }, "636b1b868eaf04cd234fbf17747d94a66e81f7bc1b060ba14151dbfaf40eeefc": { "query": "SELECT value as \"value: i32\" FROM user_variables\n WHERE user_id = ? AND room_id = ? AND key = ?", "describe": { @@ -60,6 +84,24 @@ ] } }, + "711d222911c1258365a6a0de1fe00eeec4686fd3589e976e225ad599e7cfc75d": { + "query": "SELECT count(*) as \"count: i32\" FROM user_variables\n WHERE room_id = ? and user_id = ?", + "describe": { + "columns": [ + { + "name": "count: i32", + "ordinal": 0, + "type_info": "Int" + } + ], + "parameters": { + "Right": 2 + }, + "nullable": [ + false + ] + } + }, "ad52bc29fc1eef2bbff8b5f7316047f81ea31b1f910d0e0226125fea89530aa2": { "query": "SELECT room_id FROM room_users\n WHERE username = ?", "describe": { @@ -113,29 +155,5 @@ false ] } - }, - "d6558668b7395b95ded8da71c80963ddde957abdcc3c68b03431f8e904e0d21f": { - "query": "SELECT key, value as \"value: i32\" FROM user_variables\n WHERE room_id = ?", - "describe": { - "columns": [ - { - "name": "key", - "ordinal": 0, - "type_info": "Text" - }, - { - "name": "value: i32", - "ordinal": 1, - "type_info": "Int64" - } - ], - "parameters": { - "Right": 1 - }, - "nullable": [ - false, - false - ] - } } } \ No newline at end of file diff --git a/src/db/sqlite/variables.rs b/src/db/sqlite/variables.rs index 0aa023d..c35ee14 100644 --- a/src/db/sqlite/variables.rs +++ b/src/db/sqlite/variables.rs @@ -17,8 +17,9 @@ impl Variables for Database { ) -> Result, DataError> { let rows = sqlx::query!( r#"SELECT key, value as "value: i32" FROM user_variables - WHERE room_id = ?"#, + WHERE room_id = ? AND user_id = ?"#, room_id, + user ) .fetch_all(&self.conn) .await?; @@ -27,7 +28,16 @@ impl Variables for Database { } async fn get_variable_count(&self, user: &str, room_id: &str) -> Result { - Ok(1) + let row = sqlx::query!( + r#"SELECT count(*) as "count: i32" FROM user_variables + WHERE room_id = ? and user_id = ?"#, + room_id, + user + ) + .fetch_optional(&self.conn) + .await?; + + Ok(row.map(|r| r.count).unwrap_or(0)) } async fn get_user_variable(