From ca7a9e30f1112cf819f0ccb3f842676813f344c2 Mon Sep 17 00:00:00 2001 From: hobokenchicken Date: Thu, 2 Jul 2026 09:19:31 -0400 Subject: [PATCH] fix: message list now returns most recent 50, not oldest 50 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Query was ORDER BY ASC LIMIT 50 — returning the 50 oldest messages. On page refresh users saw ancient messages instead of recent ones. Changed to ORDER BY DESC LIMIT then reverse in Go so the API still returns chronological order but from the bottom of the history. --- internal/message/handlers.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/internal/message/handlers.go b/internal/message/handlers.go index 2f785b8..37e0df9 100644 --- a/internal/message/handlers.go +++ b/internal/message/handlers.go @@ -486,7 +486,7 @@ func (h *Handler) List(w http.ResponseWriter, r *http.Request) { FROM messages m JOIN users u ON m.author_id = u.id WHERE m.channel_id = $1 AND m.created_at < (SELECT created_at FROM messages WHERE id = $2) - ORDER BY m.created_at ASC + ORDER BY m.created_at DESC LIMIT $3 `, channelID, before, limit) } else { @@ -495,7 +495,7 @@ func (h *Handler) List(w http.ResponseWriter, r *http.Request) { FROM messages m JOIN users u ON m.author_id = u.id WHERE m.channel_id = $1 - ORDER BY m.created_at ASC + ORDER BY m.created_at DESC LIMIT $2 `, channelID, limit) } @@ -527,6 +527,11 @@ func (h *Handler) List(w http.ResponseWriter, r *http.Request) { messages = h.attachEmbeds(r.Context(), messages) + // Reverse: query returns DESC (newest first), client expects ASC (oldest first). + for i, j := 0, len(messages)-1; i < j; i, j = i+1, j-1 { + messages[i], messages[j] = messages[j], messages[i] + } + w.Header().Set("Content-Type", "application/json") json.NewEncoder(w).Encode(messages)