mirror of
https://github.com/Team254/cheesy-arena-lite.git
synced 2026-03-09 13:46:44 -04:00
73 lines
1.5 KiB
Go
73 lines
1.5 KiB
Go
// Copyright 2019 Team 254. All Rights Reserved.
|
|
// Author: pat@patfairbank.com (Patrick Fairbank)
|
|
//
|
|
// Model and datastore CRUD methods for an award.
|
|
|
|
package model
|
|
|
|
import "sort"
|
|
|
|
type Award struct {
|
|
Id int `db:"id"`
|
|
Type AwardType
|
|
AwardName string
|
|
TeamId int
|
|
PersonName string
|
|
}
|
|
|
|
type AwardType int
|
|
|
|
const (
|
|
JudgedAward AwardType = iota
|
|
FinalistAward
|
|
WinnerAward
|
|
)
|
|
|
|
func (database *Database) CreateAward(award *Award) error {
|
|
return database.awardTable.create(award)
|
|
}
|
|
|
|
func (database *Database) GetAwardById(id int) (*Award, error) {
|
|
var award *Award
|
|
err := database.awardTable.getById(id, &award)
|
|
return award, err
|
|
}
|
|
|
|
func (database *Database) UpdateAward(award *Award) error {
|
|
return database.awardTable.update(award)
|
|
}
|
|
|
|
func (database *Database) DeleteAward(id int) error {
|
|
return database.awardTable.delete(id)
|
|
}
|
|
|
|
func (database *Database) TruncateAwards() error {
|
|
return database.awardTable.truncate()
|
|
}
|
|
|
|
func (database *Database) GetAllAwards() ([]Award, error) {
|
|
var awards []Award
|
|
if err := database.awardTable.getAll(&awards); err != nil {
|
|
return nil, err
|
|
}
|
|
sort.Slice(awards, func(i, j int) bool {
|
|
return awards[i].Id < awards[j].Id
|
|
})
|
|
return awards, nil
|
|
}
|
|
|
|
func (database *Database) GetAwardsByType(awardType AwardType) ([]Award, error) {
|
|
awards, err := database.GetAllAwards()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
var matchingAwards []Award
|
|
for _, award := range awards {
|
|
if award.Type == awardType {
|
|
matchingAwards = append(matchingAwards, award)
|
|
}
|
|
}
|
|
return matchingAwards, nil
|
|
}
|