sped up /meta

This commit is contained in:
2021-10-24 19:38:04 +02:00
parent 9e08c80da5
commit 676e9fb566
2 changed files with 62 additions and 18 deletions

View File

@@ -6,6 +6,7 @@ import (
"csgowtfd/ent/match"
"csgowtfd/ent/player"
"csgowtfd/ent/stats"
"csgowtfd/ent/weaponstats"
"encoding/json"
"entgo.io/ent/dialect/sql"
"errors"
@@ -196,7 +197,7 @@ type (
const (
shareCodeURLEntry = "https://api.steampowered.com/ICSGOPlayers_730/GetNextMatchSharingCode/v1?key=%s&steamid=%d&steamidkey=%s&knowncode=%s"
SideMetaCacheKey = "csgowtfd_side_meta_%d_%d"
SideMetaCacheKey = "csgowtfd_side_meta_%d"
MatchMetaCacheKey = "csgowtfd_match_meta_%d"
)
@@ -230,12 +231,12 @@ func GetMatchStats(dbPlayer *ent.Player, lock *sync.RWMutex) (int, int, int, err
return wins, ties, loss, nil
}
func GetMetaStats(dbPlayer *ent.Player, lock *sync.RWMutex, limit int) (*MetaStatsResponse, error) {
func GetMetaStats(dbPlayer *ent.Player, lock *sync.RWMutex) (*MetaStatsResponse, error) {
mResponse := new(MetaStatsResponse)
mResponse.Player = &PlayerResponse{SteamID64: dbPlayer.ID}
lock.RLock()
tPlayers, err := dbPlayer.QueryMatches().QueryPlayers().All(context.Background())
tPlayers, err := dbPlayer.QueryMatches().QueryPlayers().Select(player.FieldID).All(context.Background())
lock.RUnlock()
if err != nil {
return nil, err
@@ -264,14 +265,15 @@ func GetMetaStats(dbPlayer *ent.Player, lock *sync.RWMutex, limit int) (*MetaSta
playerRes := &PlayerResponse{
SteamID64: s.ID,
Name: s.Name,
Avatar: s.Avatar,
Tracked: s.AuthCode != "",
VanityURL: s.VanityURLReal,
}
lock.RLock()
pMatches, err := s.QueryMatches().Where(match.IDIn(matchIDs...)).WithStats().Where(match.HasStatsWith(stats.Or(stats.PlayerStats(dbPlayer.ID), stats.PlayerStats(s.ID)))).All(context.Background())
pMatches, err := s.QueryMatches().
Select(match.FieldID, match.FieldMatchResult, match.FieldMap).
Where(match.IDIn(matchIDs...)).
WithStats().
Where(match.HasStatsWith(stats.Or(stats.PlayerStats(dbPlayer.ID), stats.PlayerStats(s.ID)))).
All(context.Background())
lock.RUnlock()
if err != nil {
return nil, err
@@ -307,7 +309,8 @@ func GetMetaStats(dbPlayer *ent.Player, lock *sync.RWMutex, limit int) (*MetaSta
}
lock.RLock()
wSs, err := subjectStats.QueryWeaponStats().All(context.Background())
wSs, err := subjectStats.QueryWeaponStats().
Select(weaponstats.FieldEqType, weaponstats.FieldEqType).All(context.Background())
lock.RUnlock()
if err != nil {
return nil, err
@@ -381,14 +384,14 @@ func GetMetaStats(dbPlayer *ent.Player, lock *sync.RWMutex, limit int) (*MetaSta
return mResponse.WeaponDmg[i].Dmg > mResponse.WeaponDmg[j].Dmg
})
if len(mResponse.BestMates) > limit {
mResponse.BestMates = mResponse.BestMates[:limit]
if len(mResponse.BestMates) > 10 {
mResponse.BestMates = mResponse.BestMates[:10]
}
if len(mResponse.MostMates) > limit {
mResponse.MostMates = mResponse.MostMates[:limit]
if len(mResponse.MostMates) > 10 {
mResponse.MostMates = mResponse.MostMates[:10]
}
if len(mResponse.WeaponDmg) > limit {
mResponse.WeaponDmg = mResponse.WeaponDmg[:limit]
if len(mResponse.WeaponDmg) > 10 {
mResponse.WeaponDmg = mResponse.WeaponDmg[:10]
}
for _, wD := range mResponse.WeaponDmg {