Implement variable count; fix listing all variables returning values for all users.
continuous-integration/drone/push Build is passing Details
continuous-integration/drone/pr Build is passing Details

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": {
"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
]
}
}
}

View File

@ -17,8 +17,9 @@ impl Variables for Database {
) -> Result<HashMap<String, i32>, 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<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(