commit 4b027dd5ebf86a899817b235cb999dc9cd37f2a8 from: Oliver Lowe date: Tue Apr 29 23:45:16 2025 UTC internal/service: add a primitive error page Onwards and upwards from a panic commit - 247c5494088a4a93b3a2290e9175f34adde47cc3 commit + 4b027dd5ebf86a899817b235cb999dc9cd37f2a8 blob - 60238e8a438264893569d426e11a67367d81bc03 blob + b61e87ec0010a3943819ef43bf5d601f5796072f --- internal/service/handlers.go +++ internal/service/handlers.go @@ -1,6 +1,7 @@ package service import ( + "fmt" "html/template" "log" "net/http" @@ -32,7 +33,11 @@ func (service *Service) searchHandler(w http.ResponseW results, err := service.findChannel(searchQuery) if err != nil { - panic("TODO") + msg := fmt.Sprintf("find %q: %v", searchQuery, err) + log.Println(msg) + w.WriteHeader(http.StatusInternalServerError) + render(w, "error", msg) + return } if isHtmx { @@ -49,12 +54,17 @@ func (service *Service) channelHandler(w http.Response channelPage := ChannelResult{ShowSubscribeButton: true} channelUrl := strings.TrimPrefix(r.URL.Path, "/channel/") - //Check to see if we have the feed in the database - if channel, err := service.db.GetChannel(channelUrl); channel != nil && err == nil { - channelPage.Channel = *channel + // Check to see if we have the feed in the database + channel, err := service.db.GetChannel(channelUrl) + if err != nil { + msg := fmt.Sprintf("get %q: %v", channelUrl, err) + log.Println(msg) + w.WriteHeader(http.StatusInternalServerError) + render(w, "error", msg) + return } - - err := render(w, "channelPage", channelPage) + channelPage.Channel = *channel + err = render(w, "channelPage", channelPage) if err != nil { log.Printf("Error executing template - %s", err) } blob - /dev/null blob + c0063f254eb9a0bc787e58bc08a0c92beab96e71 (mode 644) --- /dev/null +++ internal/templates/error.tmpl @@ -0,0 +1,8 @@ +{{ define "error" }} +{{ template "header" }} +
+

Error

+

{{ . }}

+
+{{ template "footer" }} +{{ end }}