From 72d546122af901951f7bd1e982dd7f96f361eede Mon Sep 17 00:00:00 2001 From: Giovanni Harting <539@idlegandalf.com> Date: Wed, 17 Nov 2021 22:32:04 +0100 Subject: [PATCH] added error handling to matchplayer --- csgo/demo_parser.go | 39 +++++++++++++++++++++++++++++---------- 1 file changed, 29 insertions(+), 10 deletions(-) diff --git a/csgo/demo_parser.go b/csgo/demo_parser.go index ed70271..85b6e99 100644 --- a/csgo/demo_parser.go +++ b/csgo/demo_parser.go @@ -150,19 +150,18 @@ func (p *DemoParser) getDBPlayer(demo *Demo, demoPlayer *common.Player) (*ent.Ma return tMatchPlayer, nil } -func (p *DemoParser) getMatchPlayerBySteamID(stats []*ent.MatchPlayer, steamId uint64) *ent.MatchPlayer { +func (p *DemoParser) MatchPlayerBySteamID(stats []*ent.MatchPlayer, steamId uint64) (*ent.MatchPlayer, error) { for _, tStats := range stats { tPLayer, err := tStats.Edges.PlayersOrErr() if err != nil { - log.Errorf("Unbale to get Stats from statList: %v", err) - return nil + return nil, fmt.Errorf("Unbale to get Stats from statList: %v", err) } if tPLayer.ID == steamId { - return tStats + return tStats, nil } } - return nil + return nil, fmt.Errorf("player not found") } func setMatchPlayerColor(matchPlayer *ent.MatchPlayer, demoPlayer *common.Player) { @@ -290,7 +289,11 @@ func (p *DemoParser) parseWorker() { return } - tAttacker := p.getMatchPlayerBySteamID(tStats, e.Attacker.SteamID64) + tAttacker, err := p.MatchPlayerBySteamID(tStats, e.Attacker.SteamID64) + if err != nil { + log.Warningf("[DP] Unable to get player for id %d: %v", e.Attacker.SteamID64, err) + return + } if e.Attacker.Team == e.Player.Team { tAttacker.DmgTeam += uint(e.HealthDamageTaken) } else { @@ -348,7 +351,11 @@ func (p *DemoParser) parseWorker() { return } - tAttacker := p.getMatchPlayerBySteamID(tStats, e.Attacker.SteamID64) + tAttacker, err := p.MatchPlayerBySteamID(tStats, e.Attacker.SteamID64) + if err != nil { + log.Warningf("[DP] Unable to get player for id %d: %v", e.Attacker.SteamID64, err) + return + } // team flash if e.Attacker.Team == e.Player.Team && e.Attacker.SteamID64 != e.Player.SteamID64 { @@ -372,7 +379,11 @@ func (p *DemoParser) parseWorker() { // onPlayerConnected demoParser.RegisterEventHandler(func(e events.PlayerTeamChange) { if e.Player != nil && e.Player.SteamID64 != 0 { - tMatchPlayer := p.getMatchPlayerBySteamID(tStats, e.Player.SteamID64) + tMatchPlayer, err := p.MatchPlayerBySteamID(tStats, e.Player.SteamID64) + if err != nil { + log.Warningf("[DP] Unable to get player for id %d: %v", e.Player.SteamID64, err) + return + } setMatchPlayerColor(tMatchPlayer, e.Player) } }) @@ -383,7 +394,11 @@ func (p *DemoParser) parseWorker() { for _, demoPlayer := range gs.Participants().Playing() { if demoPlayer != nil && demoPlayer.SteamID64 != 0 { - tMatchPlayer := p.getMatchPlayerBySteamID(tStats, demoPlayer.SteamID64) + tMatchPlayer, err := p.MatchPlayerBySteamID(tStats, demoPlayer.SteamID64) + if err != nil { + log.Warningf("[DP] Unable to get player for id %d: %v", demoPlayer.SteamID64, err) + return + } setMatchPlayerColor(tMatchPlayer, demoPlayer) } } @@ -392,7 +407,11 @@ func (p *DemoParser) parseWorker() { // onRankUpdate demoParser.RegisterEventHandler(func(e events.RankUpdate) { if e.SteamID64() != 0 { - tMatchPlayer := p.getMatchPlayerBySteamID(tStats, e.SteamID64()) + tMatchPlayer, err := p.MatchPlayerBySteamID(tStats, e.SteamID64()) + if err != nil { + log.Warningf("[DP] Unable to get player for id %d: %v", e.SteamID64(), err) + return + } tMatchPlayer.RankOld = e.RankOld tMatchPlayer.RankNew = e.RankNew