1
0
mirror of https://github.com/muety/wakapi.git synced 2023-08-10 21:12:56 +03:00

feat: top languages by user

This commit is contained in:
Ferdinand Mütsch
2022-10-05 21:52:10 +02:00
parent a27fe04919
commit 7a07c9d4fc
5 changed files with 35 additions and 20 deletions

View File

@@ -2,6 +2,7 @@ package routes
import (
"fmt"
"github.com/duke-git/lancet/v2/slice"
"github.com/emvi/logbuch"
"github.com/gorilla/mux"
conf "github.com/muety/wakapi/config"
@@ -58,6 +59,7 @@ func (h *LeaderboardHandler) buildViewModel(r *http.Request) *view.LeaderboardVi
var err error
var leaderboard models.Leaderboard
var userLanguages map[string][]string
var topKeys []string
if byParam == "" {
@@ -74,6 +76,14 @@ func (h *LeaderboardHandler) buildViewModel(r *http.Request) *view.LeaderboardVi
return &view.LeaderboardViewModel{Error: criticalError}
}
userLeaderboards := slice.GroupWith[*models.LeaderboardItem, string](leaderboard, func(item *models.LeaderboardItem) string {
return item.UserID
})
userLanguages = map[string][]string{}
for u, items := range userLeaderboards {
userLanguages[u] = models.Leaderboard(items).TopKeysByUser(models.SummaryLanguage, u)
}
topKeys = leaderboard.TopKeys(by)
if len(topKeys) > 0 {
if keyParam == "" {
@@ -92,13 +102,14 @@ func (h *LeaderboardHandler) buildViewModel(r *http.Request) *view.LeaderboardVi
}
return &view.LeaderboardViewModel{
User: user,
By: byParam,
Key: keyParam,
Items: leaderboard,
TopKeys: topKeys,
ApiKey: apiKey,
Success: r.URL.Query().Get("success"),
Error: r.URL.Query().Get("error"),
User: user,
By: byParam,
Key: keyParam,
Items: leaderboard,
UserLanguages: userLanguages,
TopKeys: topKeys,
ApiKey: apiKey,
Success: r.URL.Query().Get("success"),
Error: r.URL.Query().Get("error"),
}
}