From 04db357568595746e26d4862a891cf2c6f4e5a2e Mon Sep 17 00:00:00 2001 From: Giovanni Harting <539@idlegandalf.com> Date: Mon, 6 Dec 2021 19:22:28 +0100 Subject: [PATCH] fixed avgrank failing if no rank is present in game --- main.go | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/main.go b/main.go index 989a9f1..ee63b8c 100644 --- a/main.go +++ b/main.go @@ -737,12 +737,14 @@ func getMatches(w http.ResponseWriter, r *http.Request) { Avg float64 `json:"avg"` MatchID uint64 `json:"match_stats"` } + avgRank := 0.0 err := iMatch.QueryStats().Where(matchplayer.RankOldNEQ(0)).GroupBy(matchplayer.MatchesColumn).Aggregate(ent.Mean(matchplayer.FieldRankOld)).Scan(context.Background(), &v) if err != nil || len(v) == 0 { - log.Errorf("[GMS] Unable to calc avg rank for match %d: %v", iMatch.ID, err) - w.WriteHeader(http.StatusInternalServerError) - return + log.Warningf("[GMS] Unable to calc avg rank for match %d: %v", iMatch.ID, err) + avgRank = 0.0 + } else { + avgRank = v[0].Avg } mResponse = append(mResponse, &utils.MatchResponse{ @@ -756,7 +758,7 @@ func getMatches(w http.ResponseWriter, r *http.Request) { Parsed: iMatch.DemoParsed, VAC: iMatch.VacPresent, GameBan: iMatch.GamebanPresent, - AvgRank: v[0].Avg, + AvgRank: avgRank, }) } @@ -794,11 +796,13 @@ func getMatch(w http.ResponseWriter, r *http.Request) { MatchID uint64 `json:"match_stats"` } + avgRank := 0.0 err = tMatch.QueryStats().Where(matchplayer.RankOldNEQ(0)).GroupBy(matchplayer.MatchesColumn).Aggregate(ent.Mean(matchplayer.FieldRankOld)).Scan(context.Background(), &v) if err != nil || len(v) == 0 { - log.Errorf("[GM] Unable to calc avg rank for match %d: %v", tMatch.ID, err) - w.WriteHeader(http.StatusInternalServerError) - return + log.Warningf("[GM] Unable to calc avg rank for match %d: %v", tMatch.ID, err) + avgRank = 0 + } else { + avgRank = v[0].Avg } mResponse := &utils.MatchResponse{ @@ -812,7 +816,7 @@ func getMatch(w http.ResponseWriter, r *http.Request) { MaxRounds: tMatch.MaxRounds, Parsed: tMatch.DemoParsed, Stats: []*utils.StatsResponse{}, - AvgRank: v[0].Avg, + AvgRank: avgRank, } if tMatch.Date.After(time.Now().AddDate(0, 0, -1*conf.Csgowtfd.DemosExpire)) {