added spray patterns
This commit is contained in:
@@ -4,9 +4,9 @@ import (
|
||||
"context"
|
||||
"csgowtfd/ent"
|
||||
"csgowtfd/ent/match"
|
||||
"csgowtfd/ent/matchplayer"
|
||||
"csgowtfd/ent/player"
|
||||
"csgowtfd/ent/stats"
|
||||
"csgowtfd/ent/weaponstats"
|
||||
"csgowtfd/ent/weapon"
|
||||
"encoding/json"
|
||||
"entgo.io/ent/dialect/sql"
|
||||
"errors"
|
||||
@@ -198,7 +198,6 @@ type (
|
||||
const (
|
||||
shareCodeURLEntry = "https://api.steampowered.com/ICSGOPlayers_730/GetNextMatchSharingCode/v1?key=%s&steamid=%d&steamidkey=%s&knowncode=%s"
|
||||
SideMetaCacheKey = "csgowtfd_side_meta_%d"
|
||||
MatchMetaCacheKey = "csgowtfd_match_meta_%d"
|
||||
)
|
||||
|
||||
//goland:noinspection SpellCheckingInspection
|
||||
@@ -222,15 +221,6 @@ func SendJSON(data interface{}, w http.ResponseWriter) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func GetMatchStats(dbPlayer *ent.Player) (int, int, int, error) {
|
||||
wins, loss, ties, err := getWinLossTieFromPlayer(dbPlayer)
|
||||
if err != nil {
|
||||
return 0, 0, 0, err
|
||||
}
|
||||
|
||||
return wins, ties, loss, nil
|
||||
}
|
||||
|
||||
func GetMetaStats(dbPlayer *ent.Player) (*MetaStatsResponse, error) {
|
||||
mResponse := new(MetaStatsResponse)
|
||||
mResponse.Player = &PlayerResponse{SteamID64: dbPlayer.ID}
|
||||
@@ -267,7 +257,7 @@ func GetMetaStats(dbPlayer *ent.Player) (*MetaStatsResponse, error) {
|
||||
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)))).
|
||||
Where(match.HasStatsWith(matchplayer.Or(matchplayer.PlayerStats(dbPlayer.ID), matchplayer.PlayerStats(s.ID)))).
|
||||
All(context.Background())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -278,8 +268,8 @@ func GetMetaStats(dbPlayer *ent.Player) (*MetaStatsResponse, error) {
|
||||
var ties int
|
||||
|
||||
for _, pm := range pMatches {
|
||||
var subjectStats *ent.Stats
|
||||
var currentStats *ent.Stats
|
||||
var subjectStats *ent.MatchPlayer
|
||||
var currentStats *ent.MatchPlayer
|
||||
|
||||
for _, ps := range pm.Edges.Stats {
|
||||
if ps.PlayerStats == dbPlayer.ID {
|
||||
@@ -303,7 +293,7 @@ func GetMetaStats(dbPlayer *ent.Player) (*MetaStatsResponse, error) {
|
||||
}
|
||||
|
||||
wSs, err := subjectStats.QueryWeaponStats().
|
||||
Select(weaponstats.FieldEqType, weaponstats.FieldDmg).All(context.Background())
|
||||
Select(weapon.FieldEqType, weapon.FieldDmg).All(context.Background())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -389,41 +379,36 @@ func GetMetaStats(dbPlayer *ent.Player) (*MetaStatsResponse, error) {
|
||||
return mResponse, nil
|
||||
}
|
||||
|
||||
func getWinLossTieFromPlayer(dbPlayer *ent.Player) (int, int, int, error) {
|
||||
func GetWinLossTieForPlayer(dbPlayer *ent.Player) (wins int, looses int, ties int, err error) {
|
||||
var res []struct {
|
||||
MatchResult int `json:"match_result"`
|
||||
Count int `json:"count"`
|
||||
}
|
||||
|
||||
err := dbPlayer.QueryMatches().GroupBy(match.FieldMatchResult).Aggregate(func(s *sql.Selector) string {
|
||||
sT := sql.Table(stats.Table)
|
||||
err = dbPlayer.QueryMatches().GroupBy(match.FieldMatchResult).Aggregate(func(s *sql.Selector) string {
|
||||
sT := sql.Table(matchplayer.Table)
|
||||
|
||||
s.Join(sT).On(s.C(match.FieldID), sT.C(stats.MatchesColumn))
|
||||
s.Join(sT).On(s.C(match.FieldID), sT.C(matchplayer.MatchesColumn))
|
||||
s.Where(sql.And(
|
||||
sql.Or(
|
||||
sql.ColumnsEQ(match.FieldMatchResult, stats.FieldTeamID),
|
||||
sql.ColumnsEQ(match.FieldMatchResult, matchplayer.FieldTeamID),
|
||||
sql.EQ(s.C(match.FieldMatchResult), 0),
|
||||
),
|
||||
sql.EQ(sT.C(stats.PlayersColumn), dbPlayer.ID),
|
||||
sql.EQ(sT.C(matchplayer.PlayersColumn), dbPlayer.ID),
|
||||
))
|
||||
return sql.Count("*")
|
||||
}).Scan(context.Background(), &res)
|
||||
if err != nil {
|
||||
return 0, 0, 0, err
|
||||
return
|
||||
}
|
||||
|
||||
total, err := dbPlayer.QueryMatches().Modify(func(s *sql.Selector) {
|
||||
s.Select("COUNT(*)")
|
||||
}).Int(context.Background())
|
||||
if err != nil {
|
||||
return 0, 0, 0, err
|
||||
return
|
||||
}
|
||||
|
||||
var (
|
||||
wins int
|
||||
ties int
|
||||
)
|
||||
|
||||
for _, r := range res {
|
||||
switch r.MatchResult {
|
||||
case 0:
|
||||
@@ -432,8 +417,9 @@ func getWinLossTieFromPlayer(dbPlayer *ent.Player) (int, int, int, error) {
|
||||
wins += r.Count
|
||||
}
|
||||
}
|
||||
looses = total - wins - ties
|
||||
|
||||
return wins, total - wins - ties, ties, nil
|
||||
return
|
||||
}
|
||||
|
||||
func IsAuthCodeValid(player *ent.Player, apiKey string, shareCode string, authCode string, rl ratelimit.Limiter) (bool, error) {
|
||||
|
Reference in New Issue
Block a user