blob: 0d20b54b86ac7994f8f3d5bb9b86e33752e0e076 [file] [log] [blame]
Yash Chainani87d06442022-04-16 20:59:47 -07001package rankings
2
3import (
4 "github.com/frc971/971-Robot-Code/scouting/db"
5 "github.com/frc971/971-Robot-Code/scouting/scraping"
6 "log"
7 "strconv"
8 "strings"
Yash Chainani87d06442022-04-16 20:59:47 -07009)
10
Yash Chainani87d06442022-04-16 20:59:47 -070011type Database interface {
12 AddOrUpdateRankings(db.Ranking) error
13}
14
15func parseTeamKey(teamKey string) (int, error) {
16 // TBA prefixes teams with "frc". Not sure why. Get rid of that.
17 teamKey = strings.TrimPrefix(teamKey, "frc")
18 return strconv.Atoi(teamKey)
19}
20
Philipp Schraderc49eaf72023-02-26 16:56:52 -080021func GetRankings(database Database, year int32, eventCode string, blueAllianceConfig string) {
22 rankings, err := scraping.GetAllData[scraping.EventRanking](year, eventCode, blueAllianceConfig, "rankings")
Yash Chainani87d06442022-04-16 20:59:47 -070023 if err != nil {
24 log.Println("Failed to scrape ranking list: ", err)
25 return
26 }
27
28 for _, rank := range rankings.Rankings {
29 teamKey, err := parseTeamKey(rank.TeamKey)
30
31 if err != nil {
32 log.Println("Failed to parse team key: ", err)
33 continue
34 }
35
36 rankingInfo := db.Ranking{
37 TeamNumber: teamKey,
38 Losses: rank.Records.Losses, Wins: rank.Records.Wins, Ties: rank.Records.Ties,
39 Rank: rank.Rank, Dq: rank.Dq,
40 }
41 err = database.AddOrUpdateRankings(rankingInfo)
42
43 if err != nil {
44 log.Println("Failed to add or update database: ", err)
45 }
46 }
47}