Add Pit Scouting Tab
Signed-off-by: Emily Markova <emily.markova@gmail.com>
Change-Id: Iede446546e20f2915bb53e134050b5025976da36
diff --git a/scouting/db/db.go b/scouting/db/db.go
index 1a43634..578edb6 100644
--- a/scouting/db/db.go
+++ b/scouting/db/db.go
@@ -1,6 +1,7 @@
package db
import (
+ "crypto/sha256"
"errors"
"fmt"
"gorm.io/driver/postgres"
@@ -27,6 +28,19 @@
R1scouter, R2scouter, R3scouter, B1scouter, B2scouter, B3scouter string
}
+type PitImage struct {
+ TeamNumber string `gorm:"primaryKey"`
+ CheckSum string `gorm:"primaryKey"`
+ ImagePath string
+ ImageData []byte
+}
+
+type RequestedPitImage struct {
+ TeamNumber string
+ CheckSum string `gorm:"primaryKey"`
+ 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
@@ -125,7 +139,7 @@
return nil, errors.New(fmt.Sprint("Failed to connect to postgres: ", err))
}
- err = database.AutoMigrate(&TeamMatch{}, &Shift{}, &Stats2023{}, &Action{}, &NotesData{}, &Ranking{}, &DriverRankingData{}, &ParsedDriverRankingData{})
+ err = database.AutoMigrate(&TeamMatch{}, &Shift{}, &Stats2023{}, &Action{}, &PitImage{}, &NotesData{}, &Ranking{}, &DriverRankingData{}, &ParsedDriverRankingData{})
if err != nil {
database.Delete()
return nil, errors.New(fmt.Sprint("Failed to create/migrate tables: ", err))
@@ -167,6 +181,11 @@
return result.Error
}
+func (database *Database) AddPitImage(p PitImage) error {
+ result := database.Create(&p)
+ return result.Error
+}
+
func (database *Database) AddToStats2023(s Stats2023) error {
if !s.PreScouting {
matches, err := database.QueryMatchesString(s.TeamNumber)
@@ -250,6 +269,12 @@
return actions, result.Error
}
+func (database *Database) ReturnPitImages() ([]PitImage, error) {
+ var images []PitImage
+ result := database.Find(&images)
+ return images, result.Error
+}
+
func (database *Database) ReturnStats2023() ([]Stats2023, error) {
var stats2023 []Stats2023
result := database.Find(&stats2023)
@@ -279,6 +304,28 @@
return matches, result.Error
}
+func (database *Database) QueryPitImages(teamNumber_ string) ([]RequestedPitImage, error) {
+ var requestedPitImages []RequestedPitImage
+ result := database.Model(&PitImage{}).
+ Where("team_number = $1", teamNumber_).
+ Find(&requestedPitImages)
+
+ return requestedPitImages, result.Error
+}
+
+func (database *Database) QueryPitImageByChecksum(checksum_ string) (PitImage, error) {
+ var pitImage PitImage
+ result := database.
+ Where("check_sum = $1", checksum_).
+ Find(&pitImage)
+ return pitImage, result.Error
+}
+
+func ComputeSha256FromByteArray(arr []byte) string {
+ sum := sha256.Sum256(arr)
+ return fmt.Sprintf("%x", sum)
+}
+
func (database *Database) QueryMatchesString(teamNumber_ string) ([]TeamMatch, error) {
var matches []TeamMatch
result := database.