diff options
Diffstat (limited to 'src/database/chat.rs')
-rw-r--r-- | src/database/chat.rs | 30 |
1 files changed, 15 insertions, 15 deletions
diff --git a/src/database/chat.rs b/src/database/chat.rs index 7364211..99ec86c 100644 --- a/src/database/chat.rs +++ b/src/database/chat.rs @@ -61,9 +61,10 @@ impl Database { ); ", )?; + let row = stmt.query_map([user_id], |row| { - let room_id = row.get(0)?; - let name = row.get(1)?; + let room_id: u64 = row.get(0)?; + let name: String = row.get(1)?; let mut stmt2 = self.0.prepare( " @@ -72,20 +73,19 @@ impl Database { " )?; - let mut users = Vec::new(); - let _ = stmt2.query_map([room_id], |row2| { - let user_id = row2.get(0)?; - users.push(user_id); - Ok(()) - })?; + let users = stmt2.query_map([room_id], |row2| { + Ok(row2.get(0)?) + })?.into_iter().flatten().collect(); let room = ChatRoom { room_id, users, name }; + Ok(room) })?; + Ok(row.into_iter().flatten().collect()) } @@ -158,8 +158,8 @@ impl Database { let msg = stmt.query_row((user_id, room_id, date, content), |row| { let message_id = row.get(0)?; - let room_id = row.get(1)?; - let user_id = row.get(2)?; + let user_id = row.get(1)?; + let room_id = row.get(2)?; let date = row.get(3)?; let content = row.get(4)?; @@ -182,17 +182,17 @@ impl Database { " SELECT * FROM chat_messages WHERE room_id = ? - AND message_id < newest_message - ORDER BY message_id ASC + AND message_id < ? + ORDER BY message_id DESC LIMIT ? OFFSET ? " )?; - let messages = stmt.query_map((room_id, 20, 20 * page), |row| { + let messages = stmt.query_map((room_id, newest_message, 20, 20 * page), |row| { let message_id = row.get(0)?; - let room_id = row.get(1)?; - let user_id = row.get(2)?; + let user_id = row.get(1)?; + let room_id = row.get(2)?; let date = row.get(3)?; let content = row.get(4)?; |