ictgj-voting/model_games.go

79 lines
1.4 KiB
Go
Raw Normal View History

2017-04-21 18:17:18 +00:00
package main
import "errors"
2017-04-21 18:17:18 +00:00
type Game struct {
2017-06-15 17:35:53 +00:00
Name string
TeamId string
Link string
2017-06-15 17:35:53 +00:00
Description string
Screenshots []Screenshot
}
type Screenshot struct {
2017-07-14 12:28:09 +00:00
UUID string
2017-06-15 17:35:53 +00:00
Description string
Image string
2017-07-14 12:28:09 +00:00
Thumbnail string
Filetype string
2017-04-21 18:17:18 +00:00
}
2017-06-08 20:43:11 +00:00
// Create a new game object, must have a valid team id
func newGame(tmId string) *Game {
2017-06-15 17:35:53 +00:00
var err error
if err = db.open(); err != nil {
return nil
2017-06-15 17:35:53 +00:00
}
defer db.close()
2017-06-15 17:35:53 +00:00
tm := db.getTeam(tmId)
2017-06-15 17:35:53 +00:00
if tm == nil {
return nil
}
return &Game{TeamId: tmId}
2017-06-15 17:35:53 +00:00
}
func (gm *Game) save() error {
2017-06-15 17:35:53 +00:00
var err error
if err = db.open(); err != nil {
return err
2017-06-15 17:35:53 +00:00
}
defer db.close()
2017-06-15 17:35:53 +00:00
tm := db.getTeam(gm.TeamId)
if tm == nil {
return errors.New("Invalid Team: " + gm.TeamId)
2017-07-14 12:28:09 +00:00
}
gamePath := []string{"teams", gm.TeamId, "game"}
if err := db.bolt.MkBucketPath(gamePath); err != nil {
return err
2017-06-15 17:35:53 +00:00
}
if gm.Name == "" {
gm.Name = tm.Name + "'s Game"
2017-06-15 17:35:53 +00:00
}
if err := db.bolt.SetValue(gamePath, "name", gm.Name); err != nil {
2017-06-15 17:35:53 +00:00
return err
}
if err := db.bolt.SetValue(gamePath, "link", gm.Link); err != nil {
2017-06-15 17:35:53 +00:00
return err
}
if err := db.bolt.SetValue(gamePath, "description", gm.Description); err != nil {
2017-07-14 12:28:09 +00:00
return err
}
if err := db.bolt.MkBucketPath(append(gamePath, "screenshots")); err != nil {
2017-07-14 12:28:09 +00:00
return err
}
return err
2017-06-15 17:35:53 +00:00
}
func (db *gjDatabase) getAllGames() []Game {
var ret []Game
tms := db.getAllTeams()
for i := range tms {
ret = append(ret, *tms[i].getGame())
2017-06-15 17:35:53 +00:00
}
return ret
2017-06-08 20:43:11 +00:00
}