Started adding rankings model.

This commit is contained in:
Patrick Fairbank
2014-05-26 23:26:30 -07:00
parent 953c14e4ee
commit 0c2b4cac28
3 changed files with 77 additions and 0 deletions

View File

@@ -20,6 +20,7 @@ type Database struct {
eventSettingsMap *modl.DbMap
matchMap *modl.DbMap
matchResultMap *modl.DbMap
rankingMap *modl.DbMap
teamMap *modl.DbMap
}
@@ -65,6 +66,9 @@ func (database *Database) mapTables() {
database.matchResultMap = modl.NewDbMap(database.db, dialect)
database.matchResultMap.AddTableWithName(MatchResultDb{}, "match_results").SetKeys(true, "Id")
database.rankingMap = modl.NewDbMap(database.db, dialect)
database.rankingMap.AddTableWithName(Ranking{}, "rankings").SetKeys(false, "TeamId")
database.teamMap = modl.NewDbMap(database.db, dialect)
database.teamMap.AddTableWithName(Team{}, "teams").SetKeys(false, "Id")
}

View File

@@ -0,0 +1,18 @@
-- +goose Up
CREATE TABLE rankings (
teamid INTEGER PRIMARY KEY,
qualificationscore int,
assistpoints int,
autopoints int,
trusscatchpoints int,
goalfoulpoints int,
random REAL,
wins int,
losses int,
ties int,
disqualifications int,
played int
);
-- +goose Down
DROP TABLE rankings;

55
ranking.go Normal file
View File

@@ -0,0 +1,55 @@
// Copyright 2014 Team 254. All Rights Reserved.
// Author: pat@patfairbank.com (Patrick Fairbank)
//
// Model and datastore CRUD methods for team ranking data at an event.
package main
type Ranking struct {
TeamId int
QualificationScore int
AssistPoints int
AutoPoints int
TrussCatchPoints int
GoalFoulPoints int
Random float64
Wins int
Losses int
Ties int
Disqualifications int
Played int
}
func (database *Database) CreateRanking(ranking *Ranking) error {
return database.rankingMap.Insert(ranking)
}
func (database *Database) GetRankingForTeam(teamId int) (*Ranking, error) {
ranking := new(Ranking)
err := database.rankingMap.Get(ranking, teamId)
if err != nil && err.Error() == "sql: no rows in result set" {
ranking = nil
err = nil
}
return ranking, err
}
func (database *Database) SaveRanking(ranking *Ranking) error {
_, err := database.rankingMap.Update(ranking)
return err
}
func (database *Database) DeleteRanking(ranking *Ranking) error {
_, err := database.rankingMap.Delete(ranking)
return err
}
func (database *Database) TruncateRankings() error {
return database.rankingMap.TruncateTables()
}
func (database *Database) GetAllRankings() ([]Ranking, error) {
var rankings []Ranking
err := database.rankingMap.Select(&rankings, "SELECT * FROM rankings ORDER BY id")
return rankings, err
}