From 0c2b4cac2888e8aa0186f1c6af64ca55a097253c Mon Sep 17 00:00:00 2001 From: Patrick Fairbank Date: Mon, 26 May 2014 23:26:30 -0700 Subject: [PATCH] Started adding rankings model. --- database.go | 4 ++ .../20140526225924_CreateRankings.sql | 18 ++++++ ranking.go | 55 +++++++++++++++++++ 3 files changed, 77 insertions(+) create mode 100644 db/migrations/20140526225924_CreateRankings.sql create mode 100644 ranking.go diff --git a/database.go b/database.go index c3c6a40..8d83781 100644 --- a/database.go +++ b/database.go @@ -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") } diff --git a/db/migrations/20140526225924_CreateRankings.sql b/db/migrations/20140526225924_CreateRankings.sql new file mode 100644 index 0000000..d8a498d --- /dev/null +++ b/db/migrations/20140526225924_CreateRankings.sql @@ -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; diff --git a/ranking.go b/ranking.go new file mode 100644 index 0000000..3db8234 --- /dev/null +++ b/ranking.go @@ -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 +}