diff options
Diffstat (limited to 'backend/home.go')
| -rw-r--r-- | backend/home.go | 60 |
1 files changed, 26 insertions, 34 deletions
diff --git a/backend/home.go b/backend/home.go index d223cf5..d41102c 100644 --- a/backend/home.go +++ b/backend/home.go @@ -2,9 +2,7 @@ package backend import ( "log/slog" - "maps" "net/http" - "slices" "strconv" "github.com/go-chi/chi/v5" @@ -27,43 +25,37 @@ func (h *homeData) SetData(d *data) { func HandleHome(r *chi.Mux) { r.Get("/", func(w http.ResponseWriter, r *http.Request) { - rawPage := r.URL.Query().Get("page") - page := 1 - if rawPage != "" { - var err error - page, err = strconv.Atoi(rawPage) - if err != nil || page < 1 { - slog.Warn("invalid page number", "rawPage", rawPage) - w.WriteHeader(http.StatusBadRequest) - return - } - } - d := new(homeData) - d.data = new(data) - if sortedLogs == nil { - sortLogs() - } - d.CurrentPage = page - d.PagesNumber = len(sortedLogs)/maxLogsPerPage + 1 - if d.PagesNumber < page { - http.NotFoundHandler().ServeHTTP(w, r) + d := handleGenericLogsDisplay(w, r) + if d == nil { return } - d.Logs = sortedLogs[(page-1)*maxLogsPerPage : min(page*maxLogsPerPage, len(sortedLogs))] d.handleGeneric(w, r, "home", d) }) } -func sortLogs() { - sortedLogs = slices.SortedFunc(maps.Values(logs), func(l *logData, l2 *logData) int { - lt := l.ModAt - l2t := l2.ModAt - // we want it reversed - if lt.Before(l2t) { - return 1 - } else if lt.After(l2t) { - return -1 +func handleGenericLogsDisplay(w http.ResponseWriter, r *http.Request) *homeData { + rawPage := r.URL.Query().Get("page") + page := 1 + if rawPage != "" { + var err error + page, err = strconv.Atoi(rawPage) + if err != nil || page < 1 { + slog.Warn("invalid page number", "rawPage", rawPage) + w.WriteHeader(http.StatusBadRequest) + return nil } - return 0 - }) + } + d := new(homeData) + d.data = new(data) + if sortedLogs == nil { + sortLogs() + } + d.CurrentPage = page + d.PagesNumber = len(sortedLogs)/maxLogsPerPage + 1 + if d.PagesNumber < page { + http.NotFoundHandler().ServeHTTP(w, r) + return nil + } + d.Logs = sortedLogs[(page-1)*maxLogsPerPage : min(page*maxLogsPerPage, len(sortedLogs))] + return d } |
