diff --git a/Services/DatabaseService.Sessions.cs b/Services/DatabaseService.Sessions.cs index f480548..4eadcd9 100644 --- a/Services/DatabaseService.Sessions.cs +++ b/Services/DatabaseService.Sessions.cs @@ -57,8 +57,17 @@ public partial class DatabaseService public async Task> GetSessionsWithStats(string userId) { using var conn = CreateConnection(); - var sessions = await conn.QueryAsync( - "SELECT * FROM sessions WHERE user_id = @userId AND is_deleted = 0 ORDER BY updated_at DESC", new { userId }); + var sessions = await conn.QueryAsync(@" + 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(); foreach (var s in sessions)