index.go (735B)
1 package server 2 3 import ( 4 "context" 5 "errors" 6 "lyrics/internal/db" 7 "lyrics/internal/server/ui/views/index" 8 "net/http" 9 ) 10 11 func (ss *ServerState) Index(w http.ResponseWriter, r *http.Request) { 12 logger := ss.logger.With("handler", "Index") 13 14 songs, err := db.RecentSongs(ss.db, 10) 15 if err != nil { 16 logger.Error("failed to get recent songs", "err", err) 17 http.Error(w, "Internal Server Error", http.StatusInternalServerError) 18 return 19 } 20 21 err = index.Index(index.IndexParams{Songs: songs}).Render(r.Context(), w) 22 if err != nil { 23 if errors.Is(err, context.Canceled) { 24 return 25 } 26 27 logger.Error("failed to render index page", "err", err) 28 http.Error(w, "Internal Server Error", http.StatusInternalServerError) 29 return 30 } 31 }