2014-05-26 23:26:30 -07:00
|
|
|
// 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.
|
|
|
|
|
|
2017-08-23 22:41:56 -07:00
|
|
|
package model
|
2014-05-26 23:26:30 -07:00
|
|
|
|
2014-05-31 03:54:46 -07:00
|
|
|
import (
|
2021-05-16 11:00:29 -07:00
|
|
|
"github.com/Team254/cheesy-arena-lite/game"
|
2021-05-12 17:49:05 -07:00
|
|
|
"sort"
|
2014-05-31 03:54:46 -07:00
|
|
|
)
|
|
|
|
|
|
2017-08-05 20:48:17 -07:00
|
|
|
func (database *Database) CreateRanking(ranking *game.Ranking) error {
|
2021-05-12 17:49:05 -07:00
|
|
|
return database.rankingTable.create(ranking)
|
2014-05-26 23:26:30 -07:00
|
|
|
}
|
|
|
|
|
|
2017-08-05 20:48:17 -07:00
|
|
|
func (database *Database) GetRankingForTeam(teamId int) (*game.Ranking, error) {
|
2021-05-12 17:49:05 -07:00
|
|
|
var ranking *game.Ranking
|
|
|
|
|
err := database.rankingTable.getById(teamId, &ranking)
|
2014-05-26 23:26:30 -07:00
|
|
|
return ranking, err
|
|
|
|
|
}
|
|
|
|
|
|
2021-05-12 17:49:05 -07:00
|
|
|
func (database *Database) UpdateRanking(ranking *game.Ranking) error {
|
|
|
|
|
return database.rankingTable.update(ranking)
|
2014-05-26 23:26:30 -07:00
|
|
|
}
|
|
|
|
|
|
2021-05-12 17:49:05 -07:00
|
|
|
func (database *Database) DeleteRanking(teamId int) error {
|
|
|
|
|
return database.rankingTable.delete(teamId)
|
2014-05-26 23:26:30 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (database *Database) TruncateRankings() error {
|
2021-05-12 17:49:05 -07:00
|
|
|
return database.rankingTable.truncate()
|
2014-05-26 23:26:30 -07:00
|
|
|
}
|
|
|
|
|
|
2020-03-26 21:38:58 -07:00
|
|
|
func (database *Database) GetAllRankings() (game.Rankings, error) {
|
2017-08-05 20:48:17 -07:00
|
|
|
var rankings []game.Ranking
|
2021-05-12 17:49:05 -07:00
|
|
|
if err := database.rankingTable.getAll(&rankings); err != nil {
|
|
|
|
|
return nil, err
|
2017-08-05 20:48:17 -07:00
|
|
|
}
|
2021-05-12 17:49:05 -07:00
|
|
|
sort.Slice(rankings, func(i, j int) bool {
|
|
|
|
|
return rankings[i].Rank < rankings[j].Rank
|
|
|
|
|
})
|
|
|
|
|
return rankings, nil
|
2014-05-26 23:26:30 -07:00
|
|
|
}
|
2014-05-31 03:54:46 -07:00
|
|
|
|
2021-05-12 17:49:05 -07:00
|
|
|
// Deletes the existing rankings and inserts the given ones as a replacement.
|
2017-08-27 18:20:44 -07:00
|
|
|
func (database *Database) ReplaceAllRankings(rankings game.Rankings) error {
|
2021-05-12 17:49:05 -07:00
|
|
|
if err := database.rankingTable.truncate(); err != nil {
|
2014-05-31 03:54:46 -07:00
|
|
|
return err
|
|
|
|
|
}
|
2017-08-27 18:20:44 -07:00
|
|
|
|
|
|
|
|
for _, ranking := range rankings {
|
2021-05-12 17:49:05 -07:00
|
|
|
if err := database.CreateRanking(&ranking); err != nil {
|
2017-08-05 20:48:17 -07:00
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
}
|
2021-05-12 17:49:05 -07:00
|
|
|
return nil
|
2014-05-31 03:54:46 -07:00
|
|
|
}
|