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
···
"errors"
"fmt"
"log"
"strings"
"time"
···
stars = append(stars, s...)
}
return stars, nil
}
···
"errors"
"fmt"
"log"
+
"slices"
"strings"
"time"
···
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
}
+4 -13
appview/state/profile.go
···
s.pages.Error500(w)
return
}
-
var repoAts []string
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
}
err = s.pages.ProfileStarred(w, pages.ProfileStarredParams{
···
s.pages.Error500(w)
return
}
+
var repos []models.Repo
for _, s := range stars {
+
if s.Repo != nil {
+
repos = append(repos, *s.Repo)
+
}
}
err = s.pages.ProfileStarred(w, pages.ProfileStarredParams{