mirror of
https://github.com/Team254/cheesy-arena-lite.git
synced 2026-03-09 13:46:44 -04:00
Added event settings model.
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -23,3 +23,4 @@ _testmain.go
|
||||
*.exe
|
||||
*.test
|
||||
*.db
|
||||
*.out
|
||||
|
||||
10
database.go
10
database.go
@@ -15,9 +15,10 @@ import (
|
||||
const migrationsDir = "db/migrations"
|
||||
|
||||
type Database struct {
|
||||
path string
|
||||
db *sql.DB
|
||||
teamMap *modl.DbMap
|
||||
path string
|
||||
db *sql.DB
|
||||
eventSettingsMap *modl.DbMap
|
||||
teamMap *modl.DbMap
|
||||
}
|
||||
|
||||
// Opens the SQLite database at the given path, creating it if it doesn't exist, and runs any pending
|
||||
@@ -55,4 +56,7 @@ func (database *Database) mapTables() {
|
||||
|
||||
database.teamMap = modl.NewDbMap(database.db, dialect)
|
||||
database.teamMap.AddTableWithName(Team{}, "teams").SetKeys(false, "Id")
|
||||
|
||||
database.eventSettingsMap = modl.NewDbMap(database.db, dialect)
|
||||
database.eventSettingsMap.AddTableWithName(EventSettings{}, "event_settings").SetKeys(false, "Id")
|
||||
}
|
||||
|
||||
@@ -4,9 +4,16 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"os"
|
||||
"testing"
|
||||
)
|
||||
|
||||
const testDbPath = "test.db"
|
||||
|
||||
func clearDb() {
|
||||
os.Remove(testDbPath)
|
||||
}
|
||||
|
||||
func TestOpenUnreachableDatabase(t *testing.T) {
|
||||
_, err := OpenDatabase("nonexistentdir/test.db")
|
||||
if err == nil {
|
||||
|
||||
4
db/dbconf.yml
Normal file
4
db/dbconf.yml
Normal file
@@ -0,0 +1,4 @@
|
||||
# This file must exist to be able to create migration boilerplate with `goose create MigrationName sql`.
|
||||
development:
|
||||
driver: sqlite3
|
||||
open: placeholder.db # Doesn't matter what this value is; the file won't be created.
|
||||
9
db/migrations/20140524160241_CreateEventSettings.sql
Normal file
9
db/migrations/20140524160241_CreateEventSettings.sql
Normal file
@@ -0,0 +1,9 @@
|
||||
-- +goose Up
|
||||
CREATE TABLE event_settings (
|
||||
id INTEGER PRIMARY KEY,
|
||||
name VARCHAR(255),
|
||||
code VARCHAR(16)
|
||||
);
|
||||
|
||||
-- +goose Down
|
||||
DROP TABLE event_settings;
|
||||
34
event_settings.go
Normal file
34
event_settings.go
Normal file
@@ -0,0 +1,34 @@
|
||||
// Copyright 2014 Team 254. All Rights Reserved.
|
||||
// Author: pat@patfairbank.com (Patrick Fairbank)
|
||||
//
|
||||
// Model and datastore read/write methods for event-level configuration.
|
||||
|
||||
package main
|
||||
|
||||
type EventSettings struct {
|
||||
Id int
|
||||
Name string
|
||||
Code string
|
||||
}
|
||||
|
||||
const eventSettingsId = 0
|
||||
|
||||
func (database *Database) GetEventSettings() (*EventSettings, error) {
|
||||
eventSettings := new(EventSettings)
|
||||
err := database.eventSettingsMap.Get(eventSettings, eventSettingsId)
|
||||
if err != nil {
|
||||
// Database record doesn't exist yet; create it now.
|
||||
err = database.eventSettingsMap.Insert(eventSettings)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return new(EventSettings), nil
|
||||
}
|
||||
return eventSettings, nil
|
||||
}
|
||||
|
||||
func (database *Database) SaveEventSettings(eventSettings *EventSettings) error {
|
||||
eventSettings.Id = eventSettingsId
|
||||
_, err := database.eventSettingsMap.Update(eventSettings)
|
||||
return err
|
||||
}
|
||||
37
event_settings_test.go
Normal file
37
event_settings_test.go
Normal file
@@ -0,0 +1,37 @@
|
||||
// Copyright 2014 Team 254. All Rights Reserved.
|
||||
// Author: pat@patfairbank.com (Patrick Fairbank)
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestEventSettingsReadWrite(t *testing.T) {
|
||||
clearDb()
|
||||
defer clearDb()
|
||||
|
||||
db, _ := OpenDatabase(testDbPath)
|
||||
defer db.Close()
|
||||
eventSettings, err := db.GetEventSettings()
|
||||
if err != nil {
|
||||
t.Error("Error:", err)
|
||||
}
|
||||
if *eventSettings != *new(EventSettings) {
|
||||
t.Errorf("Expected blank event settings, got %v", eventSettings)
|
||||
}
|
||||
|
||||
eventSettings.Name = "Chezy Champs"
|
||||
eventSettings.Code = "cc"
|
||||
err = db.SaveEventSettings(eventSettings)
|
||||
if err != nil {
|
||||
t.Error("Error:", err)
|
||||
}
|
||||
eventSettings2, err := db.GetEventSettings()
|
||||
if err != nil {
|
||||
t.Error("Error:", err)
|
||||
}
|
||||
if *eventSettings2 != *eventSettings {
|
||||
t.Errorf("Expected '%v', got '%v'", eventSettings, eventSettings2)
|
||||
}
|
||||
}
|
||||
@@ -4,16 +4,9 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"os"
|
||||
"testing"
|
||||
)
|
||||
|
||||
const testDbPath = "test.db"
|
||||
|
||||
func clearDb() {
|
||||
os.Remove(testDbPath)
|
||||
}
|
||||
|
||||
func TestGetNonexistentTeam(t *testing.T) {
|
||||
clearDb()
|
||||
defer clearDb()
|
||||
|
||||
Reference in New Issue
Block a user