blob: 9ffa503806d5e5f6267646d1839d52af5261e02a [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"
Yash Chainani87d06442022-04-16 20:59:47 -07007 "strings"
Yash Chainani87d06442022-04-16 20:59:47 -07008)
9
Yash Chainani87d06442022-04-16 20:59:47 -070010type Database interface {
11 AddOrUpdateRankings(db.Ranking) error
12}
13
Emily Markovae68b7632023-12-30 14:17:55 -080014func parseTeamKey(teamKey string) string {
Yash Chainani87d06442022-04-16 20:59:47 -070015 // TBA prefixes teams with "frc". Not sure why. Get rid of that.
16 teamKey = strings.TrimPrefix(teamKey, "frc")
Emily Markovae68b7632023-12-30 14:17:55 -080017 return teamKey
Yash Chainani87d06442022-04-16 20:59:47 -070018}
19
Philipp Schraderc49eaf72023-02-26 16:56:52 -080020func GetRankings(database Database, year int32, eventCode string, blueAllianceConfig string) {
21 rankings, err := scraping.GetAllData[scraping.EventRanking](year, eventCode, blueAllianceConfig, "rankings")
Yash Chainani87d06442022-04-16 20:59:47 -070022 if err != nil {
23 log.Println("Failed to scrape ranking list: ", err)
24 return
25 }
26
27 for _, rank := range rankings.Rankings {
Emily Markovae68b7632023-12-30 14:17:55 -080028 teamKey := parseTeamKey(rank.TeamKey)
Yash Chainani87d06442022-04-16 20:59:47 -070029
30 rankingInfo := db.Ranking{
31 TeamNumber: teamKey,
32 Losses: rank.Records.Losses, Wins: rank.Records.Wins, Ties: rank.Records.Ties,
33 Rank: rank.Rank, Dq: rank.Dq,
34 }
35 err = database.AddOrUpdateRankings(rankingInfo)
36
37 if err != nil {
38 log.Println("Failed to add or update database: ", err)
39 }
40 }
41}