Delete Stats object and replace with Stats2023

Deleting the stats object in the database and any functions/files that are using it and replacing it with Stats2023 in the view tab.

Signed-off-by: Emily Markova <emily.markova@gmail.com>
Change-Id: I76f5ad9e3f5d4a6ede60266fdc179e21013d6093
diff --git a/scouting/db/db.go b/scouting/db/db.go
index 3791596..98d8d71 100644
--- a/scouting/db/db.go
+++ b/scouting/db/db.go
@@ -7,7 +7,6 @@
 	"gorm.io/gorm"
 	"gorm.io/gorm/clause"
 	"gorm.io/gorm/logger"
-	"strconv"
 )
 
 type Database struct {
@@ -28,44 +27,6 @@
 	R1scouter, R2scouter, R3scouter, B1scouter, B2scouter, B3scouter string
 }
 
-type Stats struct {
-	TeamNumber       int32  `gorm:"primaryKey"`
-	MatchNumber      int32  `gorm:"primaryKey"`
-	SetNumber        int32  `gorm:"primaryKey"`
-	CompLevel        string `gorm:"primaryKey"`
-	StartingQuadrant int32
-	// This field is for the balls picked up during auto. Use this field
-	// when using this library. Ignore the AutoBallPickedUpX fields below.
-	AutoBallPickedUp [5]bool `gorm:"-:all"`
-	// These fields are internal implementation details. Do not use these.
-	// TODO(phil): Figure out how to use the JSON gorm serializer instead
-	// of manually serializing/deserializing these.
-	AutoBallPickedUp1 bool
-	AutoBallPickedUp2 bool
-	AutoBallPickedUp3 bool
-	AutoBallPickedUp4 bool
-	AutoBallPickedUp5 bool
-	// TODO(phil): Re-order auto and teleop fields so auto comes first.
-	ShotsMissed, UpperGoalShots, LowerGoalShots   int32
-	ShotsMissedAuto, UpperGoalAuto, LowerGoalAuto int32
-	PlayedDefense, DefenseReceivedScore           int32
-	// Climbing level:
-	// 0 -> "NoAttempt"
-	// 1 -> "Failed"
-	// 2 -> "FailedWithPlentyOfTime"
-	// 3 -> "Low"
-	// 4 -> "Medium"
-	// 5 -> "High"
-	// 6 -> "Traversal"
-	Climbing int32
-	// Some non-numerical data that the scout felt worth noting.
-	Comment string
-	// The username of the person who collected these statistics.
-	// "unknown" if submitted without logging in.
-	// Empty if the stats have not yet been collected.
-	CollectedBy string
-}
-
 type Stats2023 struct {
 	TeamNumber                                                     string `gorm:"primaryKey"`
 	MatchNumber                                                    int32  `gorm:"primaryKey"`
@@ -155,7 +116,7 @@
 		return nil, errors.New(fmt.Sprint("Failed to connect to postgres: ", err))
 	}
 
-	err = database.AutoMigrate(&TeamMatch{}, &Shift{}, &Stats{}, &Stats2023{}, &Action{}, &NotesData{}, &Ranking{}, &DriverRankingData{}, &ParsedDriverRankingData{})
+	err = database.AutoMigrate(&TeamMatch{}, &Shift{}, &Stats2023{}, &Action{}, &NotesData{}, &Ranking{}, &DriverRankingData{}, &ParsedDriverRankingData{})
 	if err != nil {
 		database.Delete()
 		return nil, errors.New(fmt.Sprint("Failed to create/migrate tables: ", err))
@@ -197,34 +158,6 @@
 	return result.Error
 }
 
-func (database *Database) AddToStats(s Stats) error {
-	matches, err := database.queryMatches(strconv.Itoa(int(s.TeamNumber)))
-	if err != nil {
-		return err
-	}
-	foundMatch := false
-	for _, match := range matches {
-		if match.MatchNumber == s.MatchNumber {
-			foundMatch = true
-			break
-		}
-	}
-	if !foundMatch {
-		return errors.New(fmt.Sprint(
-			"Failed to find team ", s.TeamNumber,
-			" in match ", s.MatchNumber, " in the schedule."))
-	}
-
-	// Unpack the auto balls array.
-	s.AutoBallPickedUp1 = s.AutoBallPickedUp[0]
-	s.AutoBallPickedUp2 = s.AutoBallPickedUp[1]
-	s.AutoBallPickedUp3 = s.AutoBallPickedUp[2]
-	s.AutoBallPickedUp4 = s.AutoBallPickedUp[3]
-	s.AutoBallPickedUp5 = s.AutoBallPickedUp[4]
-	result := database.Create(&s)
-	return result.Error
-}
-
 func (database *Database) AddToStats2023(s Stats2023) error {
 	matches, err := database.QueryMatchesString(s.TeamNumber)
 	if err != nil {
@@ -298,34 +231,6 @@
 	return actions, result.Error
 }
 
-// Packs the stats. This really just consists of taking the individual auto
-// ball booleans and turning them into an array. The individual booleans are
-// cleared so that they don't affect struct comparisons.
-func packStats(stats *Stats) {
-	stats.AutoBallPickedUp = [5]bool{
-		stats.AutoBallPickedUp1,
-		stats.AutoBallPickedUp2,
-		stats.AutoBallPickedUp3,
-		stats.AutoBallPickedUp4,
-		stats.AutoBallPickedUp5,
-	}
-	stats.AutoBallPickedUp1 = false
-	stats.AutoBallPickedUp2 = false
-	stats.AutoBallPickedUp3 = false
-	stats.AutoBallPickedUp4 = false
-	stats.AutoBallPickedUp5 = false
-}
-
-func (database *Database) ReturnStats() ([]Stats, error) {
-	var stats []Stats
-	result := database.Find(&stats)
-	// Pack the auto balls array.
-	for i := range stats {
-		packStats(&stats[i])
-	}
-	return stats, result.Error
-}
-
 func (database *Database) ReturnStats2023() ([]Stats2023, error) {
 	var stats2023 []Stats2023
 	result := database.Find(&stats2023)
@@ -369,16 +274,6 @@
 	return shifts, result.Error
 }
 
-func (database *Database) QueryStats(teamNumber_ int) ([]Stats, error) {
-	var stats []Stats
-	result := database.Where("team_number = ?", teamNumber_).Find(&stats)
-	// Pack the auto balls array.
-	for i := range stats {
-		packStats(&stats[i])
-	}
-	return stats, result.Error
-}
-
 func (database *Database) QueryActions(teamNumber_ int) ([]Action, error) {
 	var actions []Action
 	result := database.