Delete last season's scouting information

Signed-off-by: Evelyn Yang <yang.2.evelyn@gmail.com>
Change-Id: If0898e4ec7030f35dbeca3eb51e620b9ab9ac7b0
diff --git a/BUILD b/BUILD
index a23de12..dfcbeda 100644
--- a/BUILD
+++ b/BUILD
@@ -50,8 +50,6 @@
 # gazelle:resolve go github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/error_response //scouting/webserver/requests/messages:error_response_go_fbs
 # gazelle:resolve go github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/submit_notes //scouting/webserver/requests/messages:submit_notes_go_fbs
 # gazelle:resolve go github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/submit_notes_response //scouting/webserver/requests/messages:submit_notes_response_go_fbs
-# gazelle:resolve go github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_2023_data_scouting_response //scouting/webserver/requests/messages:request_2023_data_scouting_response_go_fbs
-# gazelle:resolve go github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_2023_data_scouting //scouting/webserver/requests/messages:request_2023_data_scouting_go_fbs
 # gazelle:resolve go github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_2024_data_scouting_response //scouting/webserver/requests/messages:request_2024_data_scouting_response_go_fbs
 # gazelle:resolve go github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_2024_data_scouting //scouting/webserver/requests/messages:request_2024_data_scouting_go_fbs
 # gazelle:resolve go github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_matches_for_team_response //scouting/webserver/requests/messages:request_matches_for_team_response_go_fbs
@@ -68,16 +66,12 @@
 # gazelle:resolve go github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/refresh_match_list_response //scouting/webserver/requests/messages:refresh_match_list_response_go_fbs
 # gazelle:resolve go github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_shift_schedule //scouting/webserver/requests/messages:request_shift_schedule_go_fbs
 # gazelle:resolve go github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_shift_schedule_response //scouting/webserver/requests/messages:request_shift_schedule_response_go_fbs
-# gazelle:resolve go github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/submit_actions //scouting/webserver/requests/messages:submit_actions_go_fbs
-# gazelle:resolve go github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/submit_actions_response //scouting/webserver/requests/messages:submit_actions_response_go_fbs
 # gazelle:resolve go github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/submit_2024_actions //scouting/webserver/requests/messages:submit_2024_actions_go_fbs
 # gazelle:resolve go github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/submit_2024_actions_response //scouting/webserver/requests/messages:submit_2024_actions_response_go_fbs
 # gazelle:resolve go github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/submit_shift_schedule //scouting/webserver/requests/messages:submit_shift_schedule_go_fbs
 # gazelle:resolve go github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/submit_shift_schedule_response //scouting/webserver/requests/messages:submit_shift_schedule_response_go_fbs
 # gazelle:resolve go github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/submit_driver_ranking //scouting/webserver/requests/messages:submit_driver_ranking_go_fbs
 # gazelle:resolve go github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/submit_driver_ranking_response //scouting/webserver/requests/messages:submit_driver_ranking_response_go_fbs
-# gazelle:resolve go github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/delete_2023_data_scouting //scouting/webserver/requests/messages:delete_2023_data_scouting_go_fbs
-# gazelle:resolve go github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/delete_2023_data_scouting_response //scouting/webserver/requests/messages:delete_2023_data_scouting_response_go_fbs
 # gazelle:resolve go github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/delete_2024_data_scouting //scouting/webserver/requests/messages:delete_2024_data_scouting_go_fbs
 # gazelle:resolve go github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/delete_2024_data_scouting_response //scouting/webserver/requests/messages:delete_2024_data_scouting_response_go_fbs
 # gazelle:resolve go github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/submit_pit_image //scouting/webserver/requests/messages:submit_pit_image_go_fbs
diff --git a/scouting/db/db.go b/scouting/db/db.go
index 9df6097..ab33ae2 100644
--- a/scouting/db/db.go
+++ b/scouting/db/db.go
@@ -41,33 +41,6 @@
 	ImagePath  string
 }
 
-type Stats2023 struct {
-	// This is set to `true` for "pre-scouted" matches. This means that the
-	// match information is unlikely to correspond with an entry in the
-	// `TeamMatch` table.
-	PreScouting bool `gorm:"primaryKey"`
-
-	TeamNumber                                                     string `gorm:"primaryKey"`
-	MatchNumber                                                    int32  `gorm:"primaryKey"`
-	SetNumber                                                      int32  `gorm:"primaryKey"`
-	CompLevel                                                      string `gorm:"primaryKey"`
-	StartingQuadrant                                               int32
-	LowCubesAuto, MiddleCubesAuto, HighCubesAuto, CubesDroppedAuto int32
-	LowConesAuto, MiddleConesAuto, HighConesAuto, ConesDroppedAuto int32
-	LowCubes, MiddleCubes, HighCubes, CubesDropped                 int32
-	LowCones, MiddleCones, HighCones, ConesDropped                 int32
-	SuperchargedPieces                                             int32
-	AvgCycle                                                       int64
-	Mobility                                                       bool
-	DockedAuto, EngagedAuto, BalanceAttemptAuto                    bool
-	Docked, Engaged, BalanceAttempt                                bool
-
-	// 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 Stats2024 struct {
 	TeamNumber                                  string `gorm:"primaryKey"`
 	MatchNumber                                 int32  `gorm:"primaryKey"`
@@ -168,7 +141,7 @@
 		return nil, errors.New(fmt.Sprint("Failed to connect to postgres: ", err))
 	}
 
-	err = database.AutoMigrate(&TeamMatch{}, &Shift{}, &Stats2023{}, &Stats2024{}, &Action{}, &PitImage{}, &NotesData{}, &Ranking{}, &DriverRankingData{}, &ParsedDriverRankingData{})
+	err = database.AutoMigrate(&TeamMatch{}, &Shift{}, &Stats2024{}, &Action{}, &PitImage{}, &NotesData{}, &Ranking{}, &DriverRankingData{}, &ParsedDriverRankingData{})
 	if err != nil {
 		database.Delete()
 		return nil, errors.New(fmt.Sprint("Failed to create/migrate tables: ", err))
@@ -205,7 +178,7 @@
 
 func (database *Database) AddAction(a Action) error {
 	// TODO(phil): Add check for a corresponding match in the `TeamMatch`
-	// table. Similar to `AddToStats2023()` below.
+	// table.
 	result := database.Create(&a)
 	return result.Error
 }
@@ -215,30 +188,6 @@
 	return result.Error
 }
 
-func (database *Database) AddToStats2023(s Stats2023) error {
-	if !s.PreScouting {
-		matches, err := database.QueryMatchesString(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."))
-		}
-	}
-
-	result := database.Create(&s)
-	return result.Error
-}
-
 func (database *Database) AddToStats2024(s Stats2024) error {
 	if s.CompType == "Regular" {
 		matches, err := database.QueryMatchesString(s.TeamNumber)
@@ -263,14 +212,6 @@
 	return result.Error
 }
 
-func (database *Database) DeleteFromStats(compLevel_ string, matchNumber_ int32, setNumber_ int32, teamNumber_ string) error {
-	var stats2023 []Stats2023
-	result := database.
-		Where("comp_level = ? AND match_number = ? AND set_number = ? AND team_number = ?", compLevel_, matchNumber_, setNumber_, teamNumber_).
-		Delete(&stats2023)
-	return result.Error
-}
-
 func (database *Database) DeleteFromStats2024(compLevel_ string, matchNumber_ int32, setNumber_ int32, teamNumber_ string) error {
 	var stats2024 []Stats2024
 	result := database.
@@ -336,27 +277,12 @@
 	return images, result.Error
 }
 
-func (database *Database) ReturnStats2023() ([]Stats2023, error) {
-	var stats2023 []Stats2023
-	result := database.Find(&stats2023)
-	return stats2023, result.Error
-}
-
 func (database *Database) ReturnStats2024() ([]Stats2024, error) {
 	var stats2024 []Stats2024
 	result := database.Find(&stats2024)
 	return stats2024, result.Error
 }
 
-func (database *Database) ReturnStats2023ForTeam(teamNumber string, matchNumber int32, setNumber int32, compLevel string, preScouting bool) ([]Stats2023, error) {
-	var stats2023 []Stats2023
-	result := database.
-		Where("team_number = ? AND match_number = ? AND set_number = ? AND comp_level = ? AND pre_scouting = ?",
-			teamNumber, matchNumber, setNumber, compLevel, preScouting).
-		Find(&stats2023)
-	return stats2023, result.Error
-}
-
 func (database *Database) ReturnStats2024ForTeam(teamNumber string, matchNumber int32, setNumber int32, compLevel string, compType string) ([]Stats2024, error) {
 	var stats2024 []Stats2024
 	result := database.
diff --git a/scouting/db/db_test.go b/scouting/db/db_test.go
index ed71880..b4f8d96 100644
--- a/scouting/db/db_test.go
+++ b/scouting/db/db_test.go
@@ -358,373 +358,6 @@
 	}
 }
 
-func TestAddToStats2023DB(t *testing.T) {
-	fixture := createDatabase(t)
-	defer fixture.TearDown()
-
-	correct := []Stats2023{
-		Stats2023{
-			PreScouting: false,
-			TeamNumber:  "6344", MatchNumber: 3, SetNumber: 1,
-			CompLevel: "quals", StartingQuadrant: 1, LowCubesAuto: 0,
-			MiddleCubesAuto: 1, HighCubesAuto: 0, CubesDroppedAuto: 1,
-			LowConesAuto: 1, MiddleConesAuto: 0, HighConesAuto: 2,
-			ConesDroppedAuto: 0, LowCubes: 1, MiddleCubes: 2,
-			HighCubes: 1, CubesDropped: 0, LowCones: 0,
-			MiddleCones: 2, HighCones: 1, ConesDropped: 1, SuperchargedPieces: 0,
-			AvgCycle: 0, Mobility: true, DockedAuto: true, EngagedAuto: false,
-			BalanceAttemptAuto: false, Docked: false, Engaged: false,
-			BalanceAttempt: false, CollectedBy: "emma",
-		},
-		Stats2023{
-			PreScouting: false,
-			TeamNumber:  "7454", MatchNumber: 3, SetNumber: 1,
-			CompLevel: "quals", StartingQuadrant: 2, LowCubesAuto: 1,
-			MiddleCubesAuto: 2, HighCubesAuto: 2, CubesDroppedAuto: 0,
-			LowConesAuto: 2, MiddleConesAuto: 0, HighConesAuto: 0,
-			ConesDroppedAuto: 1, LowCubes: 1, MiddleCubes: 0,
-			HighCubes: 0, CubesDropped: 1, LowCones: 0,
-			MiddleCones: 0, HighCones: 1, ConesDropped: 0, SuperchargedPieces: 1,
-			AvgCycle: 0, Mobility: false, DockedAuto: false, EngagedAuto: false,
-			BalanceAttemptAuto: true, Docked: true, Engaged: true,
-			BalanceAttempt: false, CollectedBy: "tyler",
-		},
-		Stats2023{
-			PreScouting: false,
-			TeamNumber:  "4354", MatchNumber: 3, SetNumber: 1,
-			CompLevel: "quals", StartingQuadrant: 3, LowCubesAuto: 0,
-			MiddleCubesAuto: 1, HighCubesAuto: 1, CubesDroppedAuto: 0,
-			LowConesAuto: 0, MiddleConesAuto: 2, HighConesAuto: 1,
-			ConesDroppedAuto: 1, LowCubes: 0, MiddleCubes: 0,
-			HighCubes: 2, CubesDropped: 1, LowCones: 1,
-			MiddleCones: 1, HighCones: 0, ConesDropped: 1, SuperchargedPieces: 0,
-			AvgCycle: 0, Mobility: true, DockedAuto: false, EngagedAuto: false,
-			BalanceAttemptAuto: false, Docked: false, Engaged: false,
-			BalanceAttempt: true, CollectedBy: "isaac",
-		},
-		Stats2023{
-			PreScouting: false,
-			TeamNumber:  "6533", MatchNumber: 3, SetNumber: 1,
-			CompLevel: "quals", StartingQuadrant: 1, LowCubesAuto: 0,
-			MiddleCubesAuto: 2, HighCubesAuto: 1, CubesDroppedAuto: 1,
-			LowConesAuto: 1, MiddleConesAuto: 0, HighConesAuto: 0,
-			ConesDroppedAuto: 0, LowCubes: 0, MiddleCubes: 1,
-			HighCubes: 2, CubesDropped: 1, LowCones: 0,
-			MiddleCones: 1, HighCones: 0, ConesDropped: 0, SuperchargedPieces: 0,
-			AvgCycle: 0, Mobility: false, DockedAuto: true, EngagedAuto: true,
-			BalanceAttemptAuto: true, Docked: false, Engaged: false,
-			BalanceAttempt: true, CollectedBy: "will",
-		},
-		Stats2023{
-			PreScouting: false,
-			TeamNumber:  "8354", MatchNumber: 3, SetNumber: 1,
-			CompLevel: "quals", StartingQuadrant: 2, LowCubesAuto: 1,
-			MiddleCubesAuto: 1, HighCubesAuto: 2, CubesDroppedAuto: 0,
-			LowConesAuto: 0, MiddleConesAuto: 1, HighConesAuto: 1,
-			ConesDroppedAuto: 1, LowCubes: 1, MiddleCubes: 0,
-			HighCubes: 0, CubesDropped: 2, LowCones: 1,
-			MiddleCones: 1, HighCones: 0, ConesDropped: 1, SuperchargedPieces: 0,
-			AvgCycle: 0, Mobility: true, DockedAuto: true, EngagedAuto: false,
-			BalanceAttemptAuto: false, Docked: true, Engaged: false,
-			BalanceAttempt: false, CollectedBy: "unkown",
-		},
-	}
-
-	matches := []TeamMatch{
-		TeamMatch{MatchNumber: 3, SetNumber: 1, CompLevel: "quals",
-			Alliance: "R", AlliancePosition: 1, TeamNumber: "6344"},
-		TeamMatch{MatchNumber: 3, SetNumber: 1, CompLevel: "quals",
-			Alliance: "R", AlliancePosition: 2, TeamNumber: "7454"},
-		TeamMatch{MatchNumber: 3, SetNumber: 1, CompLevel: "quals",
-			Alliance: "R", AlliancePosition: 3, TeamNumber: "4354"},
-		TeamMatch{MatchNumber: 3, SetNumber: 1, CompLevel: "quals",
-			Alliance: "B", AlliancePosition: 1, TeamNumber: "6533"},
-		TeamMatch{MatchNumber: 3, SetNumber: 1, CompLevel: "quals",
-			Alliance: "B", AlliancePosition: 2, TeamNumber: "8354"},
-	}
-
-	for _, match := range matches {
-		err := fixture.db.AddToMatch(match)
-		check(t, err, "Failed to add match")
-	}
-
-	for i := 0; i < len(correct); i++ {
-		err := fixture.db.AddToStats2023(correct[i])
-		check(t, err, "Failed to add 2023stats to DB")
-	}
-
-	got, err := fixture.db.ReturnStats2023()
-	check(t, err, "Failed ReturnStats2023()")
-
-	if !reflect.DeepEqual(correct, got) {
-		t.Errorf("Got %#v,\nbut expected %#v.", got, correct)
-	}
-}
-
-func TestInsertPreScoutedStats(t *testing.T) {
-	fixture := createDatabase(t)
-	defer fixture.TearDown()
-
-	stats := Stats2023{
-		PreScouting: false,
-		TeamNumber:  "6344", MatchNumber: 3, SetNumber: 1,
-		CompLevel: "quals", StartingQuadrant: 1, LowCubesAuto: 0,
-		MiddleCubesAuto: 1, HighCubesAuto: 0, CubesDroppedAuto: 1,
-		LowConesAuto: 1, MiddleConesAuto: 0, HighConesAuto: 2,
-		ConesDroppedAuto: 0, LowCubes: 1, MiddleCubes: 2,
-		HighCubes: 1, CubesDropped: 0, LowCones: 0,
-		MiddleCones: 2, HighCones: 1, ConesDropped: 1, SuperchargedPieces: 0,
-		AvgCycle: 0, Mobility: true, DockedAuto: true, EngagedAuto: false,
-		BalanceAttemptAuto: false, Docked: false, Engaged: false,
-		BalanceAttempt: false, CollectedBy: "emma",
-	}
-
-	// Attempt to insert the non-pre-scouted data and make sure it fails.
-	err := fixture.db.AddToStats2023(stats)
-	if err == nil {
-		t.Fatal("Expected error from inserting the stats.")
-	}
-	if err.Error() != "Failed to find team 6344 in match 3 in the schedule." {
-		t.Fatal("Got:", err.Error())
-	}
-
-	// Mark the data as pre-scouting data. It should now succeed.
-	stats.PreScouting = true
-	err = fixture.db.AddToStats2023(stats)
-	check(t, err, "Failed to add prescouted stats to DB")
-}
-
-func TestQueryingStats2023ByTeam(t *testing.T) {
-	fixture := createDatabase(t)
-	defer fixture.TearDown()
-
-	stats := []Stats2023{
-		Stats2023{
-			PreScouting: false,
-			TeamNumber:  "6344", MatchNumber: 3, SetNumber: 1,
-			CompLevel: "qm", StartingQuadrant: 1, LowCubesAuto: 0,
-			MiddleCubesAuto: 1, HighCubesAuto: 0, CubesDroppedAuto: 1,
-			LowConesAuto: 1, MiddleConesAuto: 0, HighConesAuto: 2,
-			ConesDroppedAuto: 0, LowCubes: 1, MiddleCubes: 2,
-			HighCubes: 1, CubesDropped: 0, LowCones: 0,
-			MiddleCones: 2, HighCones: 1, ConesDropped: 1, SuperchargedPieces: 0,
-			AvgCycle: 0, Mobility: true, DockedAuto: true, EngagedAuto: false,
-			BalanceAttemptAuto: false, Docked: false, Engaged: false,
-			BalanceAttempt: false, CollectedBy: "emma",
-		},
-		Stats2023{
-			PreScouting: false,
-			TeamNumber:  "7454", MatchNumber: 4, SetNumber: 1,
-			CompLevel: "qm", StartingQuadrant: 2, LowCubesAuto: 1,
-			MiddleCubesAuto: 2, HighCubesAuto: 2, CubesDroppedAuto: 0,
-			LowConesAuto: 2, MiddleConesAuto: 0, HighConesAuto: 0,
-			ConesDroppedAuto: 1, LowCubes: 1, MiddleCubes: 0,
-			HighCubes: 0, CubesDropped: 1, LowCones: 0,
-			MiddleCones: 0, HighCones: 1, ConesDropped: 0, SuperchargedPieces: 1,
-			AvgCycle: 0, Mobility: false, DockedAuto: true, EngagedAuto: true,
-			BalanceAttemptAuto: true, Docked: false, Engaged: false,
-			BalanceAttempt: false, CollectedBy: "tyler",
-		},
-		Stats2023{
-			PreScouting: false,
-			TeamNumber:  "6344", MatchNumber: 5, SetNumber: 1,
-			CompLevel: "qm", StartingQuadrant: 1, LowCubesAuto: 0,
-			MiddleCubesAuto: 1, HighCubesAuto: 0, CubesDroppedAuto: 1,
-			LowConesAuto: 1, MiddleConesAuto: 0, HighConesAuto: 2,
-			ConesDroppedAuto: 0, LowCubes: 1, MiddleCubes: 2,
-			HighCubes: 1, CubesDropped: 0, LowCones: 0,
-			MiddleCones: 2, HighCones: 1, ConesDropped: 1, SuperchargedPieces: 0,
-			AvgCycle: 0, Mobility: true, DockedAuto: true, EngagedAuto: false,
-			BalanceAttemptAuto: false, Docked: true, Engaged: false,
-			BalanceAttempt: true, CollectedBy: "emma",
-		},
-	}
-
-	matches := []TeamMatch{
-		TeamMatch{MatchNumber: 3, SetNumber: 1, CompLevel: "qm",
-			Alliance: "R", AlliancePosition: 1, TeamNumber: "6344"},
-		TeamMatch{MatchNumber: 4, SetNumber: 1, CompLevel: "qm",
-			Alliance: "R", AlliancePosition: 1, TeamNumber: "7454"},
-		TeamMatch{MatchNumber: 5, SetNumber: 1, CompLevel: "qm",
-			Alliance: "R", AlliancePosition: 1, TeamNumber: "6344"},
-	}
-
-	for _, match := range matches {
-		err := fixture.db.AddToMatch(match)
-		check(t, err, "Failed to add match")
-	}
-
-	for i := range stats {
-		err := fixture.db.AddToStats2023(stats[i])
-		check(t, err, "Failed to add 2023stats to DB")
-	}
-
-	// Validate that requesting status for a single team gets us the
-	// expected data.
-	statsFor6344, err := fixture.db.ReturnStats2023ForTeam("6344", 3, 1, "qm", false)
-	check(t, err, "Failed ReturnStats2023()")
-
-	if !reflect.DeepEqual([]Stats2023{stats[0]}, statsFor6344) {
-		t.Errorf("Got %#v,\nbut expected %#v.", statsFor6344, stats[0])
-	}
-
-	// Validate that requesting team data for a non-existent match returns
-	// nothing.
-	statsForMissing, err := fixture.db.ReturnStats2023ForTeam("6344", 9, 1, "qm", false)
-	check(t, err, "Failed ReturnStats2023()")
-
-	if !reflect.DeepEqual([]Stats2023{}, statsForMissing) {
-		t.Errorf("Got %#v,\nbut expected %#v.", statsForMissing, []Stats2023{})
-	}
-}
-
-func TestDeleteFromStats(t *testing.T) {
-	fixture := createDatabase(t)
-	defer fixture.TearDown()
-
-	startingStats := []Stats2023{
-		Stats2023{
-			PreScouting: false,
-			TeamNumber:  "1111", MatchNumber: 5, SetNumber: 1,
-			CompLevel: "quals", StartingQuadrant: 2, LowCubesAuto: 2,
-			MiddleCubesAuto: 0, HighCubesAuto: 1, CubesDroppedAuto: 1,
-			LowConesAuto: 0, MiddleConesAuto: 2, HighConesAuto: 0,
-			ConesDroppedAuto: 1, LowCubes: 0, MiddleCubes: 1,
-			HighCubes: 2, CubesDropped: 1, LowCones: 1,
-			MiddleCones: 0, HighCones: 1, ConesDropped: 2, SuperchargedPieces: 0,
-			AvgCycle: 58, Mobility: true, DockedAuto: false, EngagedAuto: false,
-			BalanceAttemptAuto: true, Docked: true, Engaged: true,
-			BalanceAttempt: false, CollectedBy: "unknown",
-		},
-		Stats2023{
-			PreScouting: false,
-			TeamNumber:  "2314", MatchNumber: 5, SetNumber: 1,
-			CompLevel: "quals", StartingQuadrant: 3, LowCubesAuto: 1,
-			MiddleCubesAuto: 0, HighCubesAuto: 1, CubesDroppedAuto: 1,
-			LowConesAuto: 0, MiddleConesAuto: 1, HighConesAuto: 0,
-			ConesDroppedAuto: 0, LowCubes: 2, MiddleCubes: 0,
-			HighCubes: 1, CubesDropped: 0, LowCones: 0,
-			MiddleCones: 2, HighCones: 1, ConesDropped: 0, SuperchargedPieces: 1,
-			AvgCycle: 34, Mobility: true, DockedAuto: true, EngagedAuto: true,
-			BalanceAttemptAuto: false, Docked: true, Engaged: false,
-			BalanceAttempt: false, CollectedBy: "simon",
-		},
-		Stats2023{
-			PreScouting: false,
-			TeamNumber:  "3242", MatchNumber: 5, SetNumber: 1,
-			CompLevel: "quals", StartingQuadrant: 1, LowCubesAuto: 0,
-			MiddleCubesAuto: 2, HighCubesAuto: 0, CubesDroppedAuto: 1,
-			LowConesAuto: 1, MiddleConesAuto: 0, HighConesAuto: 0,
-			ConesDroppedAuto: 1, LowCubes: 0, MiddleCubes: 2,
-			HighCubes: 0, CubesDropped: 0, LowCones: 2,
-			MiddleCones: 0, HighCones: 1, ConesDropped: 1, SuperchargedPieces: 0,
-			AvgCycle: 50, Mobility: true, DockedAuto: false, EngagedAuto: false,
-			BalanceAttemptAuto: true, Docked: false, Engaged: false,
-			BalanceAttempt: false, CollectedBy: "eliza",
-		},
-		Stats2023{
-			PreScouting: false,
-			TeamNumber:  "1742", MatchNumber: 5, SetNumber: 1,
-			CompLevel: "quals", StartingQuadrant: 4, LowCubesAuto: 1,
-			MiddleCubesAuto: 1, HighCubesAuto: 0, CubesDroppedAuto: 0,
-			LowConesAuto: 0, MiddleConesAuto: 2, HighConesAuto: 0,
-			ConesDroppedAuto: 1, LowCubes: 0, MiddleCubes: 1,
-			HighCubes: 2, CubesDropped: 1, LowCones: 0,
-			MiddleCones: 2, HighCones: 1, ConesDropped: 1, SuperchargedPieces: 0,
-			AvgCycle: 49, Mobility: false, DockedAuto: true, EngagedAuto: false,
-			Docked: false, Engaged: false, CollectedBy: "isaac",
-		},
-		Stats2023{
-			PreScouting: false,
-			TeamNumber:  "2454", MatchNumber: 5, SetNumber: 1,
-			CompLevel: "quals", StartingQuadrant: 1, LowCubesAuto: 0,
-			MiddleCubesAuto: 0, HighCubesAuto: 0, CubesDroppedAuto: 0,
-			LowConesAuto: 1, MiddleConesAuto: 1, HighConesAuto: 0,
-			ConesDroppedAuto: 1, LowCubes: 1, MiddleCubes: 2,
-			HighCubes: 0, CubesDropped: 0, LowCones: 1,
-			MiddleCones: 1, HighCones: 1, ConesDropped: 0, SuperchargedPieces: 0,
-			AvgCycle: 70, Mobility: false, DockedAuto: true, EngagedAuto: true,
-			BalanceAttemptAuto: false, Docked: false, Engaged: false,
-			BalanceAttempt: true, CollectedBy: "sam",
-		},
-	}
-
-	correct := []Stats2023{
-		Stats2023{
-			PreScouting: false,
-			TeamNumber:  "3242", MatchNumber: 5, SetNumber: 1,
-			CompLevel: "quals", StartingQuadrant: 1, LowCubesAuto: 0,
-			MiddleCubesAuto: 2, HighCubesAuto: 0, CubesDroppedAuto: 1,
-			LowConesAuto: 1, MiddleConesAuto: 0, HighConesAuto: 0,
-			ConesDroppedAuto: 1, LowCubes: 0, MiddleCubes: 2,
-			HighCubes: 0, CubesDropped: 0, LowCones: 2,
-			MiddleCones: 0, HighCones: 1, ConesDropped: 1, SuperchargedPieces: 0,
-			AvgCycle: 50, Mobility: true, DockedAuto: false, EngagedAuto: false,
-			BalanceAttemptAuto: true, Docked: false, Engaged: false,
-			BalanceAttempt: false, CollectedBy: "eliza",
-		},
-		Stats2023{
-			PreScouting: false,
-			TeamNumber:  "2454", MatchNumber: 5, SetNumber: 1,
-			CompLevel: "quals", StartingQuadrant: 1, LowCubesAuto: 0,
-			MiddleCubesAuto: 0, HighCubesAuto: 0, CubesDroppedAuto: 0,
-			LowConesAuto: 1, MiddleConesAuto: 1, HighConesAuto: 0,
-			ConesDroppedAuto: 1, LowCubes: 1, MiddleCubes: 2,
-			HighCubes: 0, CubesDropped: 0, LowCones: 1,
-			MiddleCones: 1, HighCones: 1, ConesDropped: 0, SuperchargedPieces: 0,
-			AvgCycle: 70, Mobility: false, DockedAuto: true, EngagedAuto: true,
-			BalanceAttemptAuto: false, Docked: false, Engaged: false,
-			BalanceAttempt: true, CollectedBy: "sam",
-		},
-	}
-
-	originalMatches := []TeamMatch{
-		TeamMatch{MatchNumber: 5, SetNumber: 1, CompLevel: "quals",
-			Alliance: "R", AlliancePosition: 1, TeamNumber: "1111"},
-		TeamMatch{MatchNumber: 5, SetNumber: 1, CompLevel: "quals",
-			Alliance: "B", AlliancePosition: 1, TeamNumber: "2314"},
-		TeamMatch{MatchNumber: 5, SetNumber: 1, CompLevel: "quals",
-			Alliance: "R", AlliancePosition: 3, TeamNumber: "1742"},
-		TeamMatch{MatchNumber: 5, SetNumber: 1, CompLevel: "quals",
-			Alliance: "B", AlliancePosition: 2, TeamNumber: "2454"},
-		TeamMatch{MatchNumber: 5, SetNumber: 1, CompLevel: "quals",
-			Alliance: "B", AlliancePosition: 3, TeamNumber: "3242"},
-	}
-
-	// Matches for which we want to delete the stats.
-	matches := []TeamMatch{
-		TeamMatch{MatchNumber: 5, SetNumber: 1, CompLevel: "quals",
-			TeamNumber: "1111"},
-		TeamMatch{MatchNumber: 5, SetNumber: 1, CompLevel: "quals",
-			TeamNumber: "2314"},
-		TeamMatch{MatchNumber: 5, SetNumber: 1, CompLevel: "quals",
-			TeamNumber: "1742"},
-	}
-
-	for _, match := range originalMatches {
-		err := fixture.db.AddToMatch(match)
-		check(t, err, "Failed to add match")
-		fmt.Println("Match has been added : ", match.TeamNumber)
-	}
-
-	for _, stat := range startingStats {
-		err := fixture.db.AddToStats2023(stat)
-		check(t, err, "Failed to add stat")
-	}
-
-	for _, match := range matches {
-		err := fixture.db.DeleteFromStats(match.CompLevel, match.MatchNumber, match.SetNumber, match.TeamNumber)
-		check(t, err, "Failed to delete stat")
-	}
-
-	got, err := fixture.db.ReturnStats2023()
-	check(t, err, "Failed ReturnStats()")
-
-	if !reflect.DeepEqual(correct, got) {
-		t.Errorf("Got %#v,\nbut expected %#v.", got, correct)
-	}
-}
-
 func TestDeleteFromStats2024(t *testing.T) {
 	fixture := createDatabase(t)
 	defer fixture.TearDown()
@@ -1247,94 +880,6 @@
 	}
 }
 
-func TestReturnStats2023DB(t *testing.T) {
-	fixture := createDatabase(t)
-	defer fixture.TearDown()
-
-	correct := []Stats2023{
-		Stats2023{
-			PreScouting: false,
-			TeamNumber:  "2343", MatchNumber: 2, SetNumber: 1,
-			CompLevel: "quals", StartingQuadrant: 1, LowCubesAuto: 1,
-			MiddleCubesAuto: 2, HighCubesAuto: 2, CubesDroppedAuto: 1,
-			LowConesAuto: 0, MiddleConesAuto: 0, HighConesAuto: 2,
-			ConesDroppedAuto: 1, LowCubes: 1, MiddleCubes: 2,
-			HighCubes: 1, CubesDropped: 0, LowCones: 2,
-			MiddleCones: 0, HighCones: 2, ConesDropped: 1, SuperchargedPieces: 0,
-			AvgCycle: 51, Mobility: true, DockedAuto: true, EngagedAuto: true,
-			BalanceAttemptAuto: false, Docked: false, Engaged: false,
-			BalanceAttempt: true, CollectedBy: "isaac",
-		},
-		Stats2023{
-			PreScouting: false,
-			TeamNumber:  "5443", MatchNumber: 2, SetNumber: 1,
-			CompLevel: "quals", StartingQuadrant: 2, LowCubesAuto: 1,
-			MiddleCubesAuto: 1, HighCubesAuto: 0, CubesDroppedAuto: 1,
-			LowConesAuto: 1, MiddleConesAuto: 1, HighConesAuto: 0,
-			ConesDroppedAuto: 0, LowCubes: 2, MiddleCubes: 2,
-			HighCubes: 1, CubesDropped: 0, LowCones: 1,
-			MiddleCones: 0, HighCones: 2, ConesDropped: 1, SuperchargedPieces: 1,
-			AvgCycle: 39, Mobility: false, DockedAuto: false, EngagedAuto: false,
-			BalanceAttemptAuto: true, Docked: false, Engaged: false,
-			BalanceAttempt: false, CollectedBy: "jack",
-		},
-		Stats2023{
-			PreScouting: false,
-			TeamNumber:  "5436", MatchNumber: 2, SetNumber: 1,
-			CompLevel: "quals", StartingQuadrant: 3, LowCubesAuto: 0,
-			MiddleCubesAuto: 2, HighCubesAuto: 0, CubesDroppedAuto: 1,
-			LowConesAuto: 2, MiddleConesAuto: 0, HighConesAuto: 0,
-			ConesDroppedAuto: 1, LowCubes: 2, MiddleCubes: 2,
-			HighCubes: 0, CubesDropped: 0, LowCones: 1,
-			MiddleCones: 2, HighCones: 1, ConesDropped: 1, SuperchargedPieces: 0,
-			AvgCycle: 45, Mobility: false, DockedAuto: true, EngagedAuto: false,
-			BalanceAttemptAuto: true, Docked: false, Engaged: false,
-			BalanceAttempt: true, CollectedBy: "martin",
-		},
-		Stats2023{
-			PreScouting: false,
-			TeamNumber:  "5643", MatchNumber: 2, SetNumber: 1,
-			CompLevel: "quals", StartingQuadrant: 4, LowCubesAuto: 0,
-			MiddleCubesAuto: 0, HighCubesAuto: 1, CubesDroppedAuto: 1,
-			LowConesAuto: 2, MiddleConesAuto: 0, HighConesAuto: 0,
-			ConesDroppedAuto: 1, LowCubes: 2, MiddleCubes: 2,
-			HighCubes: 0, CubesDropped: 0, LowCones: 2,
-			MiddleCones: 2, HighCones: 1, ConesDropped: 1, SuperchargedPieces: 0,
-			AvgCycle: 34, Mobility: true, DockedAuto: true, EngagedAuto: false,
-			BalanceAttemptAuto: false, Docked: true, Engaged: false,
-			BalanceAttempt: false, CollectedBy: "unknown",
-		},
-	}
-
-	matches := []TeamMatch{
-		TeamMatch{MatchNumber: 2, SetNumber: 1, CompLevel: "quals",
-			Alliance: "R", AlliancePosition: 1, TeamNumber: "2343"},
-		TeamMatch{MatchNumber: 2, SetNumber: 1, CompLevel: "quals",
-			Alliance: "R", AlliancePosition: 2, TeamNumber: "5443"},
-		TeamMatch{MatchNumber: 2, SetNumber: 1, CompLevel: "quals",
-			Alliance: "R", AlliancePosition: 3, TeamNumber: "5436"},
-		TeamMatch{MatchNumber: 2, SetNumber: 1, CompLevel: "quals",
-			Alliance: "B", AlliancePosition: 1, TeamNumber: "5643"},
-	}
-
-	for _, match := range matches {
-		err := fixture.db.AddToMatch(match)
-		check(t, err, "Failed to add match")
-	}
-
-	for i := 0; i < len(correct); i++ {
-		err := fixture.db.AddToStats2023(correct[i])
-		check(t, err, fmt.Sprint("Failed to add stats ", i))
-	}
-
-	got, err := fixture.db.ReturnStats2023()
-	check(t, err, "Failed ReturnStats()")
-
-	if !reflect.DeepEqual(correct, got) {
-		t.Errorf("Got %#v,\nbut expected %#v.", got, correct)
-	}
-}
-
 func TestReturnActionsDB(t *testing.T) {
 	fixture := createDatabase(t)
 	defer fixture.TearDown()
diff --git a/scouting/webserver/requests/BUILD b/scouting/webserver/requests/BUILD
index 6c0460b..25bc82f 100644
--- a/scouting/webserver/requests/BUILD
+++ b/scouting/webserver/requests/BUILD
@@ -8,13 +8,9 @@
     visibility = ["//visibility:public"],
     deps = [
         "//scouting/db",
-        "//scouting/webserver/requests/messages:delete_2023_data_scouting_go_fbs",
-        "//scouting/webserver/requests/messages:delete_2023_data_scouting_response_go_fbs",
         "//scouting/webserver/requests/messages:delete_2024_data_scouting_go_fbs",
         "//scouting/webserver/requests/messages:delete_2024_data_scouting_response_go_fbs",
         "//scouting/webserver/requests/messages:error_response_go_fbs",
-        "//scouting/webserver/requests/messages:request_2023_data_scouting_go_fbs",
-        "//scouting/webserver/requests/messages:request_2023_data_scouting_response_go_fbs",
         "//scouting/webserver/requests/messages:request_2024_data_scouting_go_fbs",
         "//scouting/webserver/requests/messages:request_2024_data_scouting_response_go_fbs",
         "//scouting/webserver/requests/messages:request_all_driver_rankings_go_fbs",
@@ -35,8 +31,6 @@
         "//scouting/webserver/requests/messages:request_shift_schedule_response_go_fbs",
         "//scouting/webserver/requests/messages:submit_2024_actions_go_fbs",
         "//scouting/webserver/requests/messages:submit_2024_actions_response_go_fbs",
-        "//scouting/webserver/requests/messages:submit_actions_go_fbs",
-        "//scouting/webserver/requests/messages:submit_actions_response_go_fbs",
         "//scouting/webserver/requests/messages:submit_driver_ranking_go_fbs",
         "//scouting/webserver/requests/messages:submit_driver_ranking_response_go_fbs",
         "//scouting/webserver/requests/messages:submit_notes_go_fbs",
@@ -59,8 +53,6 @@
         "//scouting/db",
         "//scouting/webserver/requests/debug",
         "//scouting/webserver/requests/messages:delete_2024_data_scouting_go_fbs",
-        "//scouting/webserver/requests/messages:request_2023_data_scouting_go_fbs",
-        "//scouting/webserver/requests/messages:request_2023_data_scouting_response_go_fbs",
         "//scouting/webserver/requests/messages:request_2024_data_scouting_go_fbs",
         "//scouting/webserver/requests/messages:request_2024_data_scouting_response_go_fbs",
         "//scouting/webserver/requests/messages:request_all_driver_rankings_go_fbs",
@@ -79,7 +71,6 @@
         "//scouting/webserver/requests/messages:request_shift_schedule_go_fbs",
         "//scouting/webserver/requests/messages:request_shift_schedule_response_go_fbs",
         "//scouting/webserver/requests/messages:submit_2024_actions_go_fbs",
-        "//scouting/webserver/requests/messages:submit_actions_go_fbs",
         "//scouting/webserver/requests/messages:submit_driver_ranking_go_fbs",
         "//scouting/webserver/requests/messages:submit_notes_go_fbs",
         "//scouting/webserver/requests/messages:submit_pit_image_go_fbs",
diff --git a/scouting/webserver/requests/debug/BUILD b/scouting/webserver/requests/debug/BUILD
index 7a78456..44fc4d6 100644
--- a/scouting/webserver/requests/debug/BUILD
+++ b/scouting/webserver/requests/debug/BUILD
@@ -7,10 +7,8 @@
     target_compatible_with = ["@platforms//cpu:x86_64"],
     visibility = ["//visibility:public"],
     deps = [
-        "//scouting/webserver/requests/messages:delete_2023_data_scouting_response_go_fbs",
         "//scouting/webserver/requests/messages:delete_2024_data_scouting_response_go_fbs",
         "//scouting/webserver/requests/messages:error_response_go_fbs",
-        "//scouting/webserver/requests/messages:request_2023_data_scouting_response_go_fbs",
         "//scouting/webserver/requests/messages:request_2024_data_scouting_response_go_fbs",
         "//scouting/webserver/requests/messages:request_all_driver_rankings_response_go_fbs",
         "//scouting/webserver/requests/messages:request_all_matches_response_go_fbs",
@@ -21,7 +19,6 @@
         "//scouting/webserver/requests/messages:request_pit_images_response_go_fbs",
         "//scouting/webserver/requests/messages:request_shift_schedule_response_go_fbs",
         "//scouting/webserver/requests/messages:submit_2024_actions_response_go_fbs",
-        "//scouting/webserver/requests/messages:submit_actions_response_go_fbs",
         "//scouting/webserver/requests/messages:submit_driver_ranking_response_go_fbs",
         "//scouting/webserver/requests/messages:submit_notes_response_go_fbs",
         "//scouting/webserver/requests/messages:submit_pit_image_response_go_fbs",
diff --git a/scouting/webserver/requests/debug/cli/main.go b/scouting/webserver/requests/debug/cli/main.go
index f513c50..f7146d9 100644
--- a/scouting/webserver/requests/debug/cli/main.go
+++ b/scouting/webserver/requests/debug/cli/main.go
@@ -89,8 +89,6 @@
 		"If specified, parse the file as a submitNotes JSON request.")
 	requestAllMatchesPtr := flag.String("requestAllMatches", "",
 		"If specified, parse the file as a RequestAllMatches JSON request.")
-	request2023DataScoutingPtr := flag.String("request2023DataScouting", "",
-		"If specified, parse the file as a Request2023DataScouting JSON request.")
 	requestAllDriverRankingsPtr := flag.String("requestAllDriverRankings", "",
 		"If specified, parse the file as a requestAllDriverRankings JSON request.")
 	requestAllNotesPtr := flag.String("requestAllNotes", "",
@@ -127,13 +125,6 @@
 		debug.RequestAllMatches)
 
 	maybePerformRequest(
-		"Request2023DataScouting",
-		"scouting/webserver/requests/messages/request_2023_data_scouting.fbs",
-		*request2023DataScoutingPtr,
-		*addressPtr,
-		debug.Request2023DataScouting)
-
-	maybePerformRequest(
 		"requestAllDriverRankings",
 		"scouting/webserver/requests/messages/request_all_driver_rankings.fbs",
 		*requestAllDriverRankingsPtr,
diff --git a/scouting/webserver/requests/debug/debug.go b/scouting/webserver/requests/debug/debug.go
index 88b4eac..6b478ed 100644
--- a/scouting/webserver/requests/debug/debug.go
+++ b/scouting/webserver/requests/debug/debug.go
@@ -9,10 +9,8 @@
 	"log"
 	"net/http"
 
-	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/delete_2023_data_scouting_response"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/delete_2024_data_scouting_response"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/error_response"
-	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_2023_data_scouting_response"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_2024_data_scouting_response"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_all_driver_rankings_response"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_all_matches_response"
@@ -23,7 +21,6 @@
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_pit_images_response"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_shift_schedule_response"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/submit_2024_actions_response"
-	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/submit_actions_response"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/submit_driver_ranking_response"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/submit_notes_response"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/submit_pit_image_response"
@@ -128,12 +125,6 @@
 		request_all_driver_rankings_response.GetRootAsRequestAllDriverRankingsResponse)
 }
 
-func Request2023DataScouting(server string, requestBytes []byte) (*request_2023_data_scouting_response.Request2023DataScoutingResponseT, error) {
-	return sendMessage[request_2023_data_scouting_response.Request2023DataScoutingResponseT](
-		server+"/requests/request/2023_data_scouting", requestBytes,
-		request_2023_data_scouting_response.GetRootAsRequest2023DataScoutingResponse)
-}
-
 func Request2024DataScouting(server string, requestBytes []byte) (*request_2024_data_scouting_response.Request2024DataScoutingResponseT, error) {
 	return sendMessage[request_2024_data_scouting_response.Request2024DataScoutingResponseT](
 		server+"/requests/request/2024_data_scouting", requestBytes,
@@ -200,24 +191,12 @@
 		submit_2024_actions_response.GetRootAsSubmit2024ActionsResponse)
 }
 
-func SubmitActions(server string, requestBytes []byte) (*submit_actions_response.SubmitActionsResponseT, error) {
-	return sendMessage[submit_actions_response.SubmitActionsResponseT](
-		server+"/requests/submit/submit_actions", requestBytes,
-		submit_actions_response.GetRootAsSubmitActionsResponse)
-}
-
 func SubmitPitImage(server string, requestBytes []byte) (*submit_pit_image_response.SubmitPitImageResponseT, error) {
 	return sendMessage[submit_pit_image_response.SubmitPitImageResponseT](
 		server+"/requests/submit/submit_pit_image", requestBytes,
 		submit_pit_image_response.GetRootAsSubmitPitImageResponse)
 }
 
-func Delete2023DataScouting(server string, requestBytes []byte) (*delete_2023_data_scouting_response.Delete2023DataScoutingResponseT, error) {
-	return sendMessage[delete_2023_data_scouting_response.Delete2023DataScoutingResponseT](
-		server+"/requests/delete/delete_2023_data_scouting", requestBytes,
-		delete_2023_data_scouting_response.GetRootAsDelete2023DataScoutingResponse)
-}
-
 func Delete2024DataScouting(server string, requestBytes []byte) (*delete_2024_data_scouting_response.Delete2024DataScoutingResponseT, error) {
 	return sendMessage[delete_2024_data_scouting_response.Delete2024DataScoutingResponseT](
 		server+"/requests/delete/delete_2024_data_scouting", requestBytes,
diff --git a/scouting/webserver/requests/messages/BUILD b/scouting/webserver/requests/messages/BUILD
index 3a36304..a008fca 100644
--- a/scouting/webserver/requests/messages/BUILD
+++ b/scouting/webserver/requests/messages/BUILD
@@ -12,8 +12,6 @@
     "request_all_notes_response",
     "request_current_scouting",
     "request_current_scouting_response",
-    "request_2023_data_scouting",
-    "request_2023_data_scouting_response",
     "request_2024_data_scouting",
     "request_2024_data_scouting_response",
     "submit_notes",
@@ -32,12 +30,8 @@
     "submit_shift_schedule_response",
     "submit_driver_ranking",
     "submit_driver_ranking_response",
-    "submit_actions",
-    "submit_actions_response",
     "submit_2024_actions",
     "submit_2024_actions_response",
-    "delete_2023_data_scouting",
-    "delete_2023_data_scouting_response",
     "delete_2024_data_scouting",
     "delete_2024_data_scouting_response",
 )
diff --git a/scouting/webserver/requests/messages/delete_2023_data_scouting.fbs b/scouting/webserver/requests/messages/delete_2023_data_scouting.fbs
deleted file mode 100644
index a2a3ce6..0000000
--- a/scouting/webserver/requests/messages/delete_2023_data_scouting.fbs
+++ /dev/null
@@ -1,10 +0,0 @@
-namespace scouting.webserver.requests;
-
-table Delete2023DataScouting {
-    comp_level:string (id: 0);
-    match_number:int (id: 1);
-    set_number:int (id: 2);
-    team_number:string (id: 3);
-}
-
-root_type Delete2023DataScouting;
diff --git a/scouting/webserver/requests/messages/delete_2023_data_scouting_response.fbs b/scouting/webserver/requests/messages/delete_2023_data_scouting_response.fbs
deleted file mode 100644
index fd07526..0000000
--- a/scouting/webserver/requests/messages/delete_2023_data_scouting_response.fbs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace scouting.webserver.requests;
-
-table Delete2023DataScoutingResponse {
-    // empty response
-}
-
-root_type Delete2023DataScoutingResponse;
diff --git a/scouting/webserver/requests/messages/request_2023_data_scouting.fbs b/scouting/webserver/requests/messages/request_2023_data_scouting.fbs
deleted file mode 100644
index e54c08f..0000000
--- a/scouting/webserver/requests/messages/request_2023_data_scouting.fbs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace scouting.webserver.requests;
-
-table Request2023DataScouting {
-
-}
-
-root_type Request2023DataScouting;
diff --git a/scouting/webserver/requests/messages/request_2023_data_scouting_response.fbs b/scouting/webserver/requests/messages/request_2023_data_scouting_response.fbs
deleted file mode 100644
index e532ffe..0000000
--- a/scouting/webserver/requests/messages/request_2023_data_scouting_response.fbs
+++ /dev/null
@@ -1,46 +0,0 @@
-namespace scouting.webserver.requests;
-
-table Stats2023 {
-  team_number:string (id: 0);
-  match_number:int (id: 1);
-  set_number:int (id: 21);
-  comp_level:string (id: 22);
-
-  starting_quadrant:int (id: 2);
-  low_cubes_auto:int (id:3);
-  middle_cubes_auto:int (id:4);
-  high_cubes_auto:int (id: 5);
-  cubes_dropped_auto: int (id: 6);
-  low_cones_auto:int (id:7);
-  middle_cones_auto:int (id:8);
-  high_cones_auto:int (id:9);
-  cones_dropped_auto:int (id:10);
-
-  low_cubes:int (id:11);
-  middle_cubes:int (id:12);
-  high_cubes:int (id:13);
-  cubes_dropped:int (id:14);
-  low_cones:int (id:15);
-  middle_cones:int (id:16);
-  high_cones:int (id:17);
-  cones_dropped:int (id:18);
-  supercharged_pieces:int (id:29);
-  // Time in nanoseconds.
-  avg_cycle: int64 (id:19);
-  // Did the robot leave its community during auto.
-  mobility: bool (id:30);
-  docked_auto: bool (id:20);
-  engaged_auto: bool (id:23);
-  balance_attempt_auto: bool (id:27);
-  docked: bool (id:25);
-  engaged: bool (id:26);
-  balance_attempt: bool (id:28);
-
-  collected_by:string (id:24);
-}
-
-table Request2023DataScoutingResponse {
-    stats_list:[Stats2023] (id:0);
-}
-
-root_type Request2023DataScoutingResponse;
diff --git a/scouting/webserver/requests/messages/submit_actions.fbs b/scouting/webserver/requests/messages/submit_actions.fbs
deleted file mode 100644
index 869c2f0..0000000
--- a/scouting/webserver/requests/messages/submit_actions.fbs
+++ /dev/null
@@ -1,80 +0,0 @@
-namespace scouting.webserver.requests;
-
-table StartMatchAction {
-    position:int (id:0);
-}
-
-enum ObjectType: short {
-    kCube,
-    kCone
-}
-
-enum ScoreLevel: short {
-    kLow,
-    kMiddle,
-    kHigh,
-    kSupercharged,
-}
-
-table MobilityAction {
-    mobility:bool (id:0);
-}
-
-table AutoBalanceAction {
-    docked:bool (id:0);
-    engaged:bool (id:1);
-    balance_attempt:bool (id:2);
-}
-
-table PickupObjectAction {
-    object_type:ObjectType (id:0);
-    auto:bool (id:1);
-}
-
-table PlaceObjectAction {
-    object_type:ObjectType (id:0);
-    score_level:ScoreLevel (id:1);
-    auto:bool (id:2);
-}
-
-table RobotDeathAction {
-    robot_on:bool (id:0);
-}
-
-table EndMatchAction {
-    docked:bool (id:0);
-    engaged:bool (id:1);
-    balance_attempt:bool (id:2);
-}
-
-union ActionType {
-    MobilityAction,
-    AutoBalanceAction,
-    StartMatchAction,
-    PickupObjectAction,
-    PlaceObjectAction,
-    RobotDeathAction,
-    EndMatchAction
-}
-
-table Action {
-    timestamp:int64 (id:0);
-    action_taken:ActionType (id:2);
-}
-
-table SubmitActions {
-    team_number:string (id: 0);
-    match_number:int (id: 1);
-    set_number:int (id: 2);
-    comp_level:string (id: 3);
-    actions_list:[Action] (id:4);
-
-    // Do not use this field. The information is collected by the webserver,
-    // not the web page.
-    collected_by:string (id: 5, deprecated);
-
-    // If this is for pre-scouting, then the server should accept this
-    // submission. I.e. checking that the match information exists in the match
-    // list should be skipped.
-    pre_scouting:bool (id: 6);
-}
diff --git a/scouting/webserver/requests/messages/submit_actions_response.fbs b/scouting/webserver/requests/messages/submit_actions_response.fbs
deleted file mode 100644
index 4079914..0000000
--- a/scouting/webserver/requests/messages/submit_actions_response.fbs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace scouting.webserver.requests;
-
-table SubmitActionsResponse {
-    // empty response
-}
-
-root_type SubmitActionsResponse;
\ No newline at end of file
diff --git a/scouting/webserver/requests/requests.go b/scouting/webserver/requests/requests.go
index 321f224..6a35e20 100644
--- a/scouting/webserver/requests/requests.go
+++ b/scouting/webserver/requests/requests.go
@@ -13,13 +13,9 @@
 	"time"
 
 	"github.com/frc971/971-Robot-Code/scouting/db"
-	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/delete_2023_data_scouting"
-	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/delete_2023_data_scouting_response"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/delete_2024_data_scouting"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/delete_2024_data_scouting_response"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/error_response"
-	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_2023_data_scouting"
-	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_2023_data_scouting_response"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_2024_data_scouting"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_2024_data_scouting_response"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_all_driver_rankings"
@@ -40,8 +36,6 @@
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_shift_schedule_response"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/submit_2024_actions"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/submit_2024_actions_response"
-	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/submit_actions"
-	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/submit_actions_response"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/submit_driver_ranking"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/submit_driver_ranking_response"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/submit_notes"
@@ -60,8 +54,6 @@
 type RequestAllDriverRankingsResponseT = request_all_driver_rankings_response.RequestAllDriverRankingsResponseT
 type RequestAllNotes = request_all_notes.RequestAllNotes
 type RequestAllNotesResponseT = request_all_notes_response.RequestAllNotesResponseT
-type Request2023DataScouting = request_2023_data_scouting.Request2023DataScouting
-type Request2023DataScoutingResponseT = request_2023_data_scouting_response.Request2023DataScoutingResponseT
 type Request2024DataScouting = request_2024_data_scouting.Request2024DataScouting
 type Request2024DataScoutingResponseT = request_2024_data_scouting_response.Request2024DataScoutingResponseT
 type SubmitNotes = submit_notes.SubmitNotes
@@ -82,14 +74,9 @@
 type SubmitShiftScheduleResponseT = submit_shift_schedule_response.SubmitShiftScheduleResponseT
 type SubmitDriverRanking = submit_driver_ranking.SubmitDriverRanking
 type SubmitDriverRankingResponseT = submit_driver_ranking_response.SubmitDriverRankingResponseT
-type SubmitActions = submit_actions.SubmitActions
-type Action = submit_actions.Action
 type Action2024 = submit_2024_actions.Action
-type SubmitActionsResponseT = submit_actions_response.SubmitActionsResponseT
 type Submit2024Actions = submit_2024_actions.Submit2024Actions
 type Submit2024ActionsResponseT = submit_2024_actions_response.Submit2024ActionsResponseT
-type Delete2023DataScouting = delete_2023_data_scouting.Delete2023DataScouting
-type Delete2023DataScoutingResponseT = delete_2023_data_scouting_response.Delete2023DataScoutingResponseT
 type Delete2024DataScouting = delete_2024_data_scouting.Delete2024DataScouting
 type Delete2024DataScoutingResponseT = delete_2024_data_scouting_response.Delete2024DataScoutingResponseT
 
@@ -98,14 +85,11 @@
 type Database interface {
 	AddToMatch(db.TeamMatch) error
 	AddToShift(db.Shift) error
-	AddToStats2023(db.Stats2023) error
 	AddToStats2024(db.Stats2024) error
 	ReturnMatches() ([]db.TeamMatch, error)
 	ReturnAllNotes() ([]db.NotesData, error)
 	ReturnAllDriverRankings() ([]db.DriverRankingData, error)
 	ReturnAllShifts() ([]db.Shift, error)
-	ReturnStats2023() ([]db.Stats2023, error)
-	ReturnStats2023ForTeam(teamNumber string, matchNumber int32, setNumber int32, compLevel string, preScouting bool) ([]db.Stats2023, error)
 	ReturnStats2024() ([]db.Stats2024, error)
 	ReturnStats2024ForTeam(teamNumber string, matchNumber int32, setNumber int32, compLevel string, compType string) ([]db.Stats2024, error)
 	QueryAllShifts(int) ([]db.Shift, error)
@@ -116,7 +100,6 @@
 	AddPitImage(db.PitImage) error
 	AddDriverRanking(db.DriverRankingData) error
 	AddAction(db.Action) error
-	DeleteFromStats(string, int32, int32, string) error
 	DeleteFromStats2024(string, int32, int32, string) error
 	DeleteFromActions(string, int32, int32, string) error
 }
@@ -693,204 +676,6 @@
 	w.Write(builder.FinishedBytes())
 }
 
-func ConvertActionsToStat(submitActions *submit_actions.SubmitActions) (db.Stats2023, error) {
-	overall_time := int64(0)
-	cycles := int64(0)
-	picked_up := false
-	lastPlacedTime := int64(0)
-	stat := db.Stats2023{
-		PreScouting: submitActions.PreScouting(),
-		TeamNumber:  string(submitActions.TeamNumber()), MatchNumber: submitActions.MatchNumber(), SetNumber: submitActions.SetNumber(), CompLevel: string(submitActions.CompLevel()),
-		StartingQuadrant: 0, LowCubesAuto: 0, MiddleCubesAuto: 0, HighCubesAuto: 0, CubesDroppedAuto: 0,
-		LowConesAuto: 0, MiddleConesAuto: 0, HighConesAuto: 0, ConesDroppedAuto: 0, LowCubes: 0, MiddleCubes: 0, HighCubes: 0,
-		CubesDropped: 0, LowCones: 0, MiddleCones: 0, HighCones: 0, ConesDropped: 0, SuperchargedPieces: 0, AvgCycle: 0, CollectedBy: "",
-	}
-	// Loop over all actions.
-	for i := 0; i < submitActions.ActionsListLength(); i++ {
-		var action submit_actions.Action
-		if !submitActions.ActionsList(&action, i) {
-			return db.Stats2023{}, errors.New(fmt.Sprintf("Failed to parse submit_actions.Action"))
-		}
-		actionTable := new(flatbuffers.Table)
-		action_type := action.ActionTakenType()
-		if !action.ActionTaken(actionTable) {
-			return db.Stats2023{}, errors.New(fmt.Sprint("Failed to parse sub-action or sub-action was missing"))
-		}
-		if action_type == submit_actions.ActionTypeStartMatchAction {
-			var startMatchAction submit_actions.StartMatchAction
-			startMatchAction.Init(actionTable.Bytes, actionTable.Pos)
-			stat.StartingQuadrant = startMatchAction.Position()
-		} else if action_type == submit_actions.ActionTypeMobilityAction {
-			var mobilityAction submit_actions.MobilityAction
-			mobilityAction.Init(actionTable.Bytes, actionTable.Pos)
-			if mobilityAction.Mobility() {
-				stat.Mobility = true
-			}
-
-		} else if action_type == submit_actions.ActionTypeAutoBalanceAction {
-			var autoBalanceAction submit_actions.AutoBalanceAction
-			autoBalanceAction.Init(actionTable.Bytes, actionTable.Pos)
-			if autoBalanceAction.Docked() {
-				stat.DockedAuto = true
-			}
-			if autoBalanceAction.Engaged() {
-				stat.EngagedAuto = true
-			}
-			if autoBalanceAction.BalanceAttempt() {
-				stat.BalanceAttemptAuto = true
-			}
-		} else if action_type == submit_actions.ActionTypePickupObjectAction {
-			var pick_up_action submit_actions.PickupObjectAction
-			pick_up_action.Init(actionTable.Bytes, actionTable.Pos)
-			if picked_up == true {
-				object := pick_up_action.ObjectType().String()
-				auto := pick_up_action.Auto()
-				if object == "kCube" && auto == false {
-					stat.CubesDropped += 1
-				} else if object == "kCube" && auto == true {
-					stat.CubesDroppedAuto += 1
-				} else if object == "kCone" && auto == false {
-					stat.ConesDropped += 1
-				} else if object == "kCube" && auto == true {
-					stat.ConesDroppedAuto += 1
-				}
-			} else {
-				picked_up = true
-			}
-		} else if action_type == submit_actions.ActionTypePlaceObjectAction {
-			var place_action submit_actions.PlaceObjectAction
-			place_action.Init(actionTable.Bytes, actionTable.Pos)
-			if !picked_up {
-				return db.Stats2023{}, errors.New(fmt.Sprintf("Got PlaceObjectAction without corresponding PickupObjectAction"))
-			}
-			object := place_action.ObjectType()
-			level := place_action.ScoreLevel()
-			auto := place_action.Auto()
-			if object == 0 && level == 0 && auto == true {
-				stat.LowCubesAuto += 1
-			} else if object == 0 && level == 0 && auto == false {
-				stat.LowCubes += 1
-			} else if object == 0 && level == 1 && auto == true {
-				stat.MiddleCubesAuto += 1
-			} else if object == 0 && level == 1 && auto == false {
-				stat.MiddleCubes += 1
-			} else if object == 0 && level == 2 && auto == true {
-				stat.HighCubesAuto += 1
-			} else if object == 0 && level == 2 && auto == false {
-				stat.HighCubes += 1
-			} else if object == 1 && level == 0 && auto == true {
-				stat.LowConesAuto += 1
-			} else if object == 1 && level == 0 && auto == false {
-				stat.LowCones += 1
-			} else if object == 1 && level == 1 && auto == true {
-				stat.MiddleConesAuto += 1
-			} else if object == 1 && level == 1 && auto == false {
-				stat.MiddleCones += 1
-			} else if object == 1 && level == 2 && auto == true {
-				stat.HighConesAuto += 1
-			} else if object == 1 && level == 2 && auto == false {
-				stat.HighCones += 1
-			} else if level == 3 {
-				stat.SuperchargedPieces += 1
-			} else {
-				return db.Stats2023{}, errors.New(fmt.Sprintf("Got unknown ObjectType/ScoreLevel/Auto combination"))
-			}
-			picked_up = false
-			if lastPlacedTime != int64(0) {
-				// If this is not the first time we place,
-				// start counting cycle time. We define cycle
-				// time as the time between placements.
-				overall_time += int64(action.Timestamp()) - lastPlacedTime
-				cycles += 1
-			}
-			lastPlacedTime = int64(action.Timestamp())
-		} else if action_type == submit_actions.ActionTypeEndMatchAction {
-			var endMatchAction submit_actions.EndMatchAction
-			endMatchAction.Init(actionTable.Bytes, actionTable.Pos)
-			if endMatchAction.Docked() {
-				stat.Docked = true
-			}
-			if endMatchAction.Engaged() {
-				stat.Engaged = true
-			}
-			if endMatchAction.BalanceAttempt() {
-				stat.BalanceAttempt = true
-			}
-		}
-	}
-	if cycles != 0 {
-		stat.AvgCycle = overall_time / cycles
-	} else {
-		stat.AvgCycle = 0
-	}
-	return stat, nil
-}
-
-// Handles a Request2023DataScouting request.
-type request2023DataScoutingHandler struct {
-	db Database
-}
-
-func (handler request2023DataScoutingHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
-	requestBytes, err := io.ReadAll(req.Body)
-	if err != nil {
-		respondWithError(w, http.StatusBadRequest, fmt.Sprint("Failed to read request bytes:", err))
-		return
-	}
-
-	_, success := parseRequest(w, requestBytes, "Request2023DataScouting", request_2023_data_scouting.GetRootAsRequest2023DataScouting)
-	if !success {
-		return
-	}
-
-	stats, err := handler.db.ReturnStats2023()
-	if err != nil {
-		respondWithError(w, http.StatusInternalServerError, fmt.Sprint("Failed to query database: ", err))
-		return
-	}
-
-	var response Request2023DataScoutingResponseT
-	for _, stat := range stats {
-		response.StatsList = append(response.StatsList, &request_2023_data_scouting_response.Stats2023T{
-			TeamNumber:         stat.TeamNumber,
-			MatchNumber:        stat.MatchNumber,
-			SetNumber:          stat.SetNumber,
-			CompLevel:          stat.CompLevel,
-			StartingQuadrant:   stat.StartingQuadrant,
-			LowCubesAuto:       stat.LowCubesAuto,
-			MiddleCubesAuto:    stat.MiddleCubesAuto,
-			HighCubesAuto:      stat.HighCubesAuto,
-			CubesDroppedAuto:   stat.CubesDroppedAuto,
-			LowConesAuto:       stat.LowConesAuto,
-			MiddleConesAuto:    stat.MiddleConesAuto,
-			HighConesAuto:      stat.HighConesAuto,
-			ConesDroppedAuto:   stat.ConesDroppedAuto,
-			LowCubes:           stat.LowCubes,
-			MiddleCubes:        stat.MiddleCubes,
-			HighCubes:          stat.HighCubes,
-			CubesDropped:       stat.CubesDropped,
-			LowCones:           stat.LowCones,
-			MiddleCones:        stat.MiddleCones,
-			HighCones:          stat.HighCones,
-			ConesDropped:       stat.ConesDropped,
-			SuperchargedPieces: stat.SuperchargedPieces,
-			AvgCycle:           stat.AvgCycle,
-			Mobility:           stat.Mobility,
-			DockedAuto:         stat.DockedAuto,
-			EngagedAuto:        stat.EngagedAuto,
-			BalanceAttemptAuto: stat.BalanceAttemptAuto,
-			Docked:             stat.Docked,
-			Engaged:            stat.Engaged,
-			BalanceAttempt:     stat.BalanceAttempt,
-			CollectedBy:        stat.CollectedBy,
-		})
-	}
-
-	builder := flatbuffers.NewBuilder(50 * 1024)
-	builder.Finish((&response).Pack(builder))
-	w.Write(builder.FinishedBytes())
-}
-
 type requestAllPitImagesHandler struct {
 	db Database
 }
@@ -1320,56 +1105,11 @@
 	w.Write(builder.FinishedBytes())
 }
 
-type Delete2023DataScoutingHandler struct {
-	db Database
-}
-
-func (handler Delete2023DataScoutingHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
-	requestBytes, err := io.ReadAll(req.Body)
-	if err != nil {
-		respondWithError(w, http.StatusBadRequest, fmt.Sprint("Failed to read request bytes:", err))
-		return
-	}
-
-	request, success := parseRequest(w, requestBytes, "Delete2023DataScouting", delete_2023_data_scouting.GetRootAsDelete2023DataScouting)
-	if !success {
-		return
-	}
-
-	err = handler.db.DeleteFromStats(
-		string(request.CompLevel()),
-		request.MatchNumber(),
-		request.SetNumber(),
-		string(request.TeamNumber()))
-
-	if err != nil {
-		respondWithError(w, http.StatusInternalServerError, fmt.Sprintf("Failed to delete from stats: %v", err))
-		return
-	}
-
-	err = handler.db.DeleteFromActions(
-		string(request.CompLevel()),
-		request.MatchNumber(),
-		request.SetNumber(),
-		string(request.TeamNumber()))
-
-	if err != nil {
-		respondWithError(w, http.StatusInternalServerError, fmt.Sprintf("Failed to delete from actions: %v", err))
-		return
-	}
-
-	var response Delete2023DataScoutingResponseT
-	builder := flatbuffers.NewBuilder(10)
-	builder.Finish((&response).Pack(builder))
-	w.Write(builder.FinishedBytes())
-}
-
 func HandleRequests(db Database, scoutingServer server.ScoutingServer, clock Clock) {
 	scoutingServer.HandleFunc("/requests", unknown)
 	scoutingServer.Handle("/requests/request/all_matches", requestAllMatchesHandler{db})
 	scoutingServer.Handle("/requests/request/all_notes", requestAllNotesHandler{db})
 	scoutingServer.Handle("/requests/request/all_driver_rankings", requestAllDriverRankingsHandler{db})
-	scoutingServer.Handle("/requests/request/2023_data_scouting", request2023DataScoutingHandler{db})
 	scoutingServer.Handle("/requests/request/2024_data_scouting", request2024DataScoutingHandler{db})
 	scoutingServer.Handle("/requests/submit/submit_notes", submitNoteScoutingHandler{db})
 	scoutingServer.Handle("/requests/submit/submit_pit_image", submitPitImageScoutingHandler{db})
@@ -1381,6 +1121,5 @@
 	scoutingServer.Handle("/requests/request/shift_schedule", requestShiftScheduleHandler{db})
 	scoutingServer.Handle("/requests/submit/submit_driver_ranking", SubmitDriverRankingHandler{db})
 	scoutingServer.Handle("/requests/submit/submit_2024_actions", submit2024ActionsHandler{db})
-	scoutingServer.Handle("/requests/delete/delete_2023_data_scouting", Delete2023DataScoutingHandler{db})
 	scoutingServer.Handle("/requests/delete/delete_2024_data_scouting", Delete2024DataScoutingHandler{db})
 }
diff --git a/scouting/webserver/requests/requests_test.go b/scouting/webserver/requests/requests_test.go
index 19bcae4..a841579 100644
--- a/scouting/webserver/requests/requests_test.go
+++ b/scouting/webserver/requests/requests_test.go
@@ -9,8 +9,6 @@
 	"github.com/frc971/971-Robot-Code/scouting/db"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/debug"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/delete_2024_data_scouting"
-	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_2023_data_scouting"
-	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_2023_data_scouting_response"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_2024_data_scouting"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_2024_data_scouting_response"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_all_driver_rankings"
@@ -29,7 +27,6 @@
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_shift_schedule"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/request_shift_schedule_response"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/submit_2024_actions"
-	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/submit_actions"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/submit_driver_ranking"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/submit_notes"
 	"github.com/frc971/971-Robot-Code/scouting/webserver/requests/messages/submit_pit_image"
@@ -299,88 +296,6 @@
 	}
 }
 
-// Validates that we can request the 2023 stats.
-func TestRequest2023DataScouting(t *testing.T) {
-	db := MockDatabase{
-		stats2023: []db.Stats2023{
-			{
-				TeamNumber: "3634", MatchNumber: 1, SetNumber: 2,
-				CompLevel: "quals", StartingQuadrant: 3, LowCubesAuto: 10,
-				MiddleCubesAuto: 1, HighCubesAuto: 1, CubesDroppedAuto: 0,
-				LowConesAuto: 1, MiddleConesAuto: 2, HighConesAuto: 1,
-				ConesDroppedAuto: 0, LowCubes: 1, MiddleCubes: 1,
-				HighCubes: 2, CubesDropped: 1, LowCones: 1,
-				MiddleCones: 2, HighCones: 0, ConesDropped: 1, SuperchargedPieces: 0,
-				AvgCycle: 34, Mobility: false, DockedAuto: true, EngagedAuto: false,
-				BalanceAttemptAuto: false, Docked: false, Engaged: false,
-				BalanceAttempt: true, CollectedBy: "isaac",
-			},
-			{
-				TeamNumber: "2343", MatchNumber: 1, SetNumber: 2,
-				CompLevel: "quals", StartingQuadrant: 1, LowCubesAuto: 0,
-				MiddleCubesAuto: 1, HighCubesAuto: 1, CubesDroppedAuto: 2,
-				LowConesAuto: 0, MiddleConesAuto: 0, HighConesAuto: 0,
-				ConesDroppedAuto: 1, LowCubes: 0, MiddleCubes: 0,
-				HighCubes: 1, CubesDropped: 0, LowCones: 0,
-				MiddleCones: 2, HighCones: 1, ConesDropped: 1, SuperchargedPieces: 0,
-				AvgCycle: 53, Mobility: false, DockedAuto: false, EngagedAuto: false,
-				BalanceAttemptAuto: true, Docked: false, Engaged: false,
-				BalanceAttempt: true, CollectedBy: "unknown",
-			},
-		},
-	}
-	scoutingServer := server.NewScoutingServer()
-	mockClock := MockClock{now: time.Now()}
-	HandleRequests(&db, scoutingServer, mockClock)
-	scoutingServer.Start(8080)
-	defer scoutingServer.Stop()
-
-	builder := flatbuffers.NewBuilder(1024)
-	builder.Finish((&request_2023_data_scouting.Request2023DataScoutingT{}).Pack(builder))
-
-	response, err := debug.Request2023DataScouting("http://localhost:8080", builder.FinishedBytes())
-	if err != nil {
-		t.Fatal("Failed to request all matches: ", err)
-	}
-
-	expected := request_2023_data_scouting_response.Request2023DataScoutingResponseT{
-		StatsList: []*request_2023_data_scouting_response.Stats2023T{
-			{
-				TeamNumber: "3634", MatchNumber: 1, SetNumber: 2,
-				CompLevel: "quals", StartingQuadrant: 3, LowCubesAuto: 10,
-				MiddleCubesAuto: 1, HighCubesAuto: 1, CubesDroppedAuto: 0,
-				LowConesAuto: 1, MiddleConesAuto: 2, HighConesAuto: 1,
-				ConesDroppedAuto: 0, LowCubes: 1, MiddleCubes: 1,
-				HighCubes: 2, CubesDropped: 1, LowCones: 1,
-				MiddleCones: 2, HighCones: 0, ConesDropped: 1, SuperchargedPieces: 0,
-				AvgCycle: 34, Mobility: false, DockedAuto: true, EngagedAuto: false,
-				BalanceAttemptAuto: false, Docked: false, Engaged: false,
-				BalanceAttempt: true, CollectedBy: "isaac",
-			},
-			{
-				TeamNumber: "2343", MatchNumber: 1, SetNumber: 2,
-				CompLevel: "quals", StartingQuadrant: 1, LowCubesAuto: 0,
-				MiddleCubesAuto: 1, HighCubesAuto: 1, CubesDroppedAuto: 2,
-				LowConesAuto: 0, MiddleConesAuto: 0, HighConesAuto: 0,
-				ConesDroppedAuto: 1, LowCubes: 0, MiddleCubes: 0,
-				HighCubes: 1, CubesDropped: 0, LowCones: 0,
-				MiddleCones: 2, HighCones: 1, ConesDropped: 1, SuperchargedPieces: 0,
-				AvgCycle: 53, Mobility: false, DockedAuto: false, EngagedAuto: false,
-				BalanceAttemptAuto: true, Docked: false, Engaged: false,
-				BalanceAttempt: true, CollectedBy: "unknown",
-			},
-		},
-	}
-	if len(expected.StatsList) != len(response.StatsList) {
-		t.Fatal("Expected ", expected, ", but got ", *response)
-	}
-	for i, match := range expected.StatsList {
-		if !reflect.DeepEqual(*match, *response.StatsList[i]) {
-			t.Fatal("Expected for stats", i, ":", *match, ", but got:", *response.StatsList[i])
-		}
-	}
-}
-
 // Validates that we can request the 2024 stats.
 func TestConvertActionsToStat2024(t *testing.T) {
 	builder := flatbuffers.NewBuilder(1024)
@@ -1150,12 +1065,6 @@
 	}
 }
 
-func packAction(action *submit_actions.ActionT) []byte {
-	builder := flatbuffers.NewBuilder(50 * 1024)
-	builder.Finish((action).Pack(builder))
-	return (builder.FinishedBytes())
-}
-
 func TestAddingActions2024(t *testing.T) {
 	database := MockDatabase{}
 	scoutingServer := server.NewScoutingServer()
@@ -1344,7 +1253,6 @@
 	notes          []db.NotesData
 	shiftSchedule  []db.Shift
 	driver_ranking []db.DriverRankingData
-	stats2023      []db.Stats2023
 	stats2024      []db.Stats2024
 	actions        []db.Action
 	images         []db.PitImage
@@ -1355,11 +1263,6 @@
 	return nil
 }
 
-func (database *MockDatabase) AddToStats2023(stats2023 db.Stats2023) error {
-	database.stats2023 = append(database.stats2023, stats2023)
-	return nil
-}
-
 func (database *MockDatabase) AddToStats2024(stats2024 db.Stats2024) error {
 	database.stats2024 = append(database.stats2024, stats2024)
 	return nil
@@ -1368,24 +1271,10 @@
 	return database.matches, nil
 }
 
-func (database *MockDatabase) ReturnStats2023() ([]db.Stats2023, error) {
-	return database.stats2023, nil
-}
-
 func (database *MockDatabase) ReturnStats2024() ([]db.Stats2024, error) {
 	return database.stats2024, nil
 }
 
-func (database *MockDatabase) ReturnStats2023ForTeam(teamNumber string, matchNumber int32, setNumber int32, compLevel string, preScouting bool) ([]db.Stats2023, error) {
-	var results []db.Stats2023
-	for _, stats := range database.stats2023 {
-		if stats.TeamNumber == teamNumber && stats.MatchNumber == matchNumber && stats.SetNumber == setNumber && stats.CompLevel == compLevel && stats.PreScouting == preScouting {
-			results = append(results, stats)
-		}
-	}
-	return results, nil
-}
-
 func (database *MockDatabase) ReturnStats2024ForTeam(teamNumber string, matchNumber int32, setNumber int32, compLevel string, compType string) ([]db.Stats2024, error) {
 	var results []db.Stats2024
 	for _, stats := range database.stats2024 {
@@ -1469,19 +1358,6 @@
 	return database.images, nil
 }
 
-func (database *MockDatabase) DeleteFromStats(compLevel_ string, matchNumber_ int32, setNumber_ int32, teamNumber_ string) error {
-	for i, stat := range database.stats2023 {
-		if stat.CompLevel == compLevel_ &&
-			stat.MatchNumber == matchNumber_ &&
-			stat.SetNumber == setNumber_ &&
-			stat.TeamNumber == teamNumber_ {
-			// Match found, remove the element from the array.
-			database.stats2023 = append(database.stats2023[:i], database.stats2023[i+1:]...)
-		}
-	}
-	return nil
-}
-
 func (database *MockDatabase) DeleteFromStats2024(compLevel_ string, matchNumber_ int32, setNumber_ int32, teamNumber_ string) error {
 	for i, stat := range database.stats2024 {
 		if stat.CompLevel == compLevel_ &&