Implement variable count; fix listing all variables returning values for all users.

This commit is contained in:
projectmoon 2021-05-18 14:27:15 +00:00
parent a665293268
commit 9f97a6cb43
2 changed files with 54 additions and 26 deletions

View File

@ -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": { "636b1b868eaf04cd234fbf17747d94a66e81f7bc1b060ba14151dbfaf40eeefc": {
"query": "SELECT value as \"value: i32\" FROM user_variables\n WHERE user_id = ? AND room_id = ? AND key = ?", "query": "SELECT value as \"value: i32\" FROM user_variables\n WHERE user_id = ? AND room_id = ? AND key = ?",
"describe": { "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": { "ad52bc29fc1eef2bbff8b5f7316047f81ea31b1f910d0e0226125fea89530aa2": {
"query": "SELECT room_id FROM room_users\n WHERE username = ?", "query": "SELECT room_id FROM room_users\n WHERE username = ?",
"describe": { "describe": {
@ -113,29 +155,5 @@
false 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
]
}
} }
} }

View File

@ -17,8 +17,9 @@ impl Variables for Database {
) -> Result<HashMap<String, i32>, DataError> { ) -> Result<HashMap<String, i32>, DataError> {
let rows = sqlx::query!( let rows = sqlx::query!(
r#"SELECT key, value as "value: i32" FROM user_variables r#"SELECT key, value as "value: i32" FROM user_variables
WHERE room_id = ?"#, WHERE room_id = ? AND user_id = ?"#,
room_id, room_id,
user
) )
.fetch_all(&self.conn) .fetch_all(&self.conn)
.await?; .await?;
@ -27,7 +28,16 @@ impl Variables for Database {
} }
async fn get_variable_count(&self, user: &str, room_id: &str) -> Result<i32, DataError> { async fn get_variable_count(&self, user: &str, room_id: &str) -> Result<i32, DataError> {
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( async fn get_user_variable(