From c2df6028b3f75a7119c97a8a93889f513eb6dfc6 Mon Sep 17 00:00:00 2001 From: William P Date: Sun, 29 Dec 2024 20:01:05 -0500 Subject: [PATCH] list all messages --- api/api.go | 1 + api/message.go | 7 +++++++ api/response.go | 14 +++++++++++++- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/api/api.go b/api/api.go index 0cf0386..3bf83e5 100644 --- a/api/api.go +++ b/api/api.go @@ -33,6 +33,7 @@ func Start() { }) r.Route("/messages", func(r chi.Router) { + r.Get("/", ListMessages) r.Route("/{messageID}", func(r chi.Router) { r.Use(MessageCtx) // Load message r.Get("/", GetMessage) diff --git a/api/message.go b/api/message.go index 0caa74c..7835230 100644 --- a/api/message.go +++ b/api/message.go @@ -42,6 +42,13 @@ func GetMessage(w http.ResponseWriter, r *http.Request) { } +func ListMessages(w http.ResponseWriter, r *http.Request) { + if err := render.RenderList(w, r, NewMessageListResponse(messages)); err != nil { + render.Render(w, r, ErrRender(err)) + return + } +} + type messageKey struct{} type Message struct { diff --git a/api/response.go b/api/response.go index deb1ec8..dfae7ff 100644 --- a/api/response.go +++ b/api/response.go @@ -1,6 +1,10 @@ package api -import "net/http" +import ( + "net/http" + + "github.com/go-chi/render" +) func NewMessageResponse(message *Message) *MessageResponse { resp := &MessageResponse{Message: message} @@ -18,6 +22,14 @@ func (mr *MessageResponse) Render(w http.ResponseWriter, r *http.Request) error return nil } +func NewMessageListResponse(messages []*Message) []render.Renderer { + list := []render.Renderer{} + for _, message := range messages { + list = append(list, NewMessageResponse(message)) + } + return list +} + func NewUserPayloadResponse(user *User) *UserPayload { return &UserPayload{User: user} }