Dashboard: Sessions nach letzter Chat-Nachricht sortieren statt updated_at
- LEFT JOIN auf messages.created_at (nur type='text') - COALESCE(last_message_at, updated_at) damit Sessions ohne Nachrichten nach ihrem updated_at einsortiert werden
This commit is contained in:
1 parent
02f5fe2faf
commit
3160a3edb8
1 file changed
+11
-2
@@ -57,8 +57,17 @@ public partial class DatabaseService
|
||||
public async Task<List<SessionWithStats>> GetSessionsWithStats(string userId)
|
||||
{
|
||||
using var conn = CreateConnection();
|
||||
var sessions = await conn.QueryAsync<SessionRecord>(
|
||||
"SELECT * FROM sessions WHERE user_id = @userId AND is_deleted = 0 ORDER BY updated_at DESC", new { userId });
|
||||
var sessions = await conn.QueryAsync<SessionRecord>(@"
|
||||
SELECT s.* FROM sessions s
|
||||
LEFT JOIN (
|
||||
SELECT c.session_id, MAX(m.created_at) AS last_message_at
|
||||
FROM chains c
|
||||
JOIN messages m ON m.chain_id = c.chain_id
|
||||
WHERE m.type = 'text'
|
||||
GROUP BY c.session_id
|
||||
) lm ON lm.session_id = s.session_id
|
||||
WHERE s.user_id = @userId AND s.is_deleted = 0
|
||||
ORDER BY COALESCE(lm.last_message_at, s.updated_at) DESC", new { userId });
|
||||
|
||||
var results = new List<SessionWithStats>();
|
||||
foreach (var s in sessions)
|
||||
|
||||
Reference in new issue
Block a user