appview/state: imrpove starred page performance #585

merged
opened by oppi.li targeting master from push-xvuvxolnykpl

this page was making a redundant query to db.GetRepos. this page could be still faster when paginated.

Signed-off-by: oppiliappan me@oppi.li

Changed files
+15 -13
appview
db
state
+11
appview/db/star.go
··· 5 5 "errors" 6 6 "fmt" 7 7 "log" 8 + "slices" 8 9 "strings" 9 10 "time" 10 11 ··· 209 210 stars = append(stars, s...) 210 211 } 211 212 213 + slices.SortFunc(stars, func(a, b models.Star) int { 214 + if a.Created.After(b.Created) { 215 + return -1 216 + } 217 + if b.Created.After(a.Created) { 218 + return 1 219 + } 220 + return 0 221 + }) 222 + 212 223 return stars, nil 213 224 } 214 225
+4 -13
appview/state/profile.go
··· 217 217 s.pages.Error500(w) 218 218 return 219 219 } 220 - var repoAts []string 220 + var repos []models.Repo 221 221 for _, s := range stars { 222 - repoAts = append(repoAts, string(s.RepoAt)) 223 - } 224 - 225 - repos, err := db.GetRepos( 226 - s.db, 227 - 0, 228 - db.FilterIn("at_uri", repoAts), 229 - ) 230 - if err != nil { 231 - l.Error("failed to get repos", "err", err) 232 - s.pages.Error500(w) 233 - return 222 + if s.Repo != nil { 223 + repos = append(repos, *s.Repo) 224 + } 234 225 } 235 226 236 227 err = s.pages.ProfileStarred(w, pages.ProfileStarredParams{