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:
Meleki committed 2026-03-14 23:14:18 +01:00
1 parent 02f5fe2faf
commit 3160a3edb8
1 file changed
+11 -2
+11 -2
View File
@@ -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)