Files
cheesy-arena-lite/match.go

112 lines
2.8 KiB
Go
Raw Normal View History

2014-05-24 18:52:10 -07:00
// Copyright 2014 Team 254. All Rights Reserved.
// Author: pat@patfairbank.com (Patrick Fairbank)
//
// Model and datastore CRUD methods for a match at an event.
package main
import (
"fmt"
2014-07-27 16:41:09 -07:00
"strings"
2014-05-24 18:52:10 -07:00
"time"
)
type Match struct {
Id int
Type string
DisplayName string
Time time.Time
ElimRound int
2015-05-30 23:58:42 -07:00
ElimGroup int
ElimInstance int
2014-05-24 18:52:10 -07:00
Red1 int
Red1IsSurrogate bool
Red2 int
Red2IsSurrogate bool
Red3 int
Red3IsSurrogate bool
Blue1 int
Blue1IsSurrogate bool
Blue2 int
Blue2IsSurrogate bool
Blue3 int
Blue3IsSurrogate bool
Status string
StartedAt time.Time
2015-05-30 23:58:42 -07:00
Winner string
2014-05-24 18:52:10 -07:00
}
func (database *Database) CreateMatch(match *Match) error {
return database.matchMap.Insert(match)
}
func (database *Database) GetMatchById(id int) (*Match, error) {
match := new(Match)
err := database.matchMap.Get(match, id)
if err != nil && err.Error() == "sql: no rows in result set" {
match = nil
err = nil
}
return match, err
}
func (database *Database) SaveMatch(match *Match) error {
_, err := database.matchMap.Update(match)
return err
}
func (database *Database) DeleteMatch(match *Match) error {
_, err := database.matchMap.Delete(match)
return err
}
func (database *Database) TruncateMatches() error {
return database.matchMap.TruncateTables()
}
2014-05-26 16:39:20 -07:00
func (database *Database) GetMatchByName(matchType string, displayName string) (*Match, error) {
var matches []Match
err := database.teamMap.Select(&matches, "SELECT * FROM matches WHERE type = ? AND displayname = ?",
matchType, displayName)
if err != nil {
return nil, err
}
if len(matches) == 0 {
return nil, nil
}
return &matches[0], err
}
2015-05-30 23:58:42 -07:00
func (database *Database) GetMatchesByElimRoundGroup(round int, group int) ([]Match, error) {
var matches []Match
err := database.teamMap.Select(&matches, "SELECT * FROM matches WHERE type = 'elimination' AND "+
2015-05-30 23:58:42 -07:00
"elimround = ? AND elimgroup = ? ORDER BY eliminstance", round, group)
return matches, err
}
2014-05-26 16:39:20 -07:00
func (database *Database) GetMatchesByType(matchType string) ([]Match, error) {
var matches []Match
err := database.teamMap.Select(&matches,
2015-05-30 23:58:42 -07:00
"SELECT * FROM matches WHERE type = ? ORDER BY elimround desc, eliminstance, elimgroup, id", matchType)
2014-05-26 16:39:20 -07:00
return matches, err
}
2014-07-27 16:41:09 -07:00
func (match *Match) CapitalizedType() string {
if match.Type == "" {
return ""
} else if match.Type == "elimination" {
return "Playoff"
2014-07-27 16:41:09 -07:00
}
return strings.ToUpper(match.Type[0:1]) + match.Type[1:]
}
func (match *Match) TbaCode() string {
if match.Type == "qualification" {
return fmt.Sprintf("qm%s", match.DisplayName)
} else if match.Type == "elimination" {
return fmt.Sprintf("%s%dm%d", strings.ToLower(elimRoundNames[match.ElimRound]), match.ElimGroup,
match.ElimInstance)
}
return ""
}