From 73821e78642c763f82e4f1dc36d696f550caa072 Mon Sep 17 00:00:00 2001 From: oppiliappan Date: Tue, 23 Sep 2025 13:45:17 +0100 Subject: [PATCH] appview/state: imrpove starred page performance Change-Id: xvuvxolnykplnttrvkvqurtxnwzkktzo this page was making a redundant query to db.GetRepos. this page could be still faster when paginated. Signed-off-by: oppiliappan --- appview/db/star.go | 11 +++++++++++ appview/state/profile.go | 17 ++++------------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/appview/db/star.go b/appview/db/star.go index bf1acbcf..f7f7c59b 100644 --- a/appview/db/star.go +++ b/appview/db/star.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "log" + "slices" "strings" "time" @@ -209,6 +210,16 @@ func GetStars(e Execer, limit int, filters ...filter) ([]models.Star, error) { stars = append(stars, s...) } + slices.SortFunc(stars, func(a, b models.Star) int { + if a.Created.After(b.Created) { + return -1 + } + if b.Created.After(a.Created) { + return 1 + } + return 0 + }) + return stars, nil } diff --git a/appview/state/profile.go b/appview/state/profile.go index ced120bc..d01c6814 100644 --- a/appview/state/profile.go +++ b/appview/state/profile.go @@ -217,20 +217,11 @@ func (s *State) starredPage(w http.ResponseWriter, r *http.Request) { s.pages.Error500(w) return } - var repoAts []string + var repos []models.Repo for _, s := range stars { - repoAts = append(repoAts, string(s.RepoAt)) - } - - repos, err := db.GetRepos( - s.db, - 0, - db.FilterIn("at_uri", repoAts), - ) - if err != nil { - l.Error("failed to get repos", "err", err) - s.pages.Error500(w) - return + if s.Repo != nil { + repos = append(repos, *s.Repo) + } } err = s.pages.ProfileStarred(w, pages.ProfileStarredParams{ -- 2.43.0