2017-04-03 21:32:13 +00:00
|
|
|
package main
|
|
|
|
|
2017-04-21 18:17:18 +00:00
|
|
|
import "github.com/br0xen/boltease"
|
2017-04-03 21:32:13 +00:00
|
|
|
|
|
|
|
var db *boltease.DB
|
|
|
|
var dbOpened bool
|
|
|
|
|
|
|
|
func openDatabase() error {
|
|
|
|
if !dbOpened {
|
|
|
|
var err error
|
|
|
|
db, err = boltease.Create(site.DB, 0600, nil)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
dbOpened = true
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func initDatabase() error {
|
|
|
|
openDatabase()
|
2017-04-21 18:17:18 +00:00
|
|
|
// Create the path to the bucket to store admin users
|
|
|
|
if err := db.MkBucketPath([]string{"users"}); err != nil {
|
|
|
|
return err
|
2017-04-03 21:32:13 +00:00
|
|
|
}
|
2017-04-21 18:17:18 +00:00
|
|
|
// Create the path to the bucket to store jam informations
|
|
|
|
if err := db.MkBucketPath([]string{"jams"}); err != nil {
|
|
|
|
return err
|
2017-04-03 21:32:13 +00:00
|
|
|
}
|
2017-04-21 18:17:18 +00:00
|
|
|
// Create the path to the bucket to store site config data
|
|
|
|
return db.MkBucketPath([]string{"site"})
|
2017-04-03 21:32:13 +00:00
|
|
|
}
|
|
|
|
|
2017-04-21 18:17:18 +00:00
|
|
|
func dbSetCurrentJam(name string) error {
|
2017-04-03 21:32:13 +00:00
|
|
|
if err := db.OpenDB(); err != nil {
|
2017-04-21 18:17:18 +00:00
|
|
|
return err
|
2017-04-03 21:32:13 +00:00
|
|
|
}
|
|
|
|
defer db.CloseDB()
|
|
|
|
|
2017-04-21 18:17:18 +00:00
|
|
|
return db.SetValue([]string{"site"}, "current-jam", name)
|
2017-04-03 21:32:13 +00:00
|
|
|
}
|
|
|
|
|
2017-04-21 18:17:18 +00:00
|
|
|
func dbHasCurrentJam() bool {
|
|
|
|
var nm string
|
2017-04-03 21:32:13 +00:00
|
|
|
var err error
|
2017-04-21 18:17:18 +00:00
|
|
|
if nm, err = dbGetCurrentJam(); err != nil {
|
|
|
|
return false
|
2017-04-03 21:32:13 +00:00
|
|
|
}
|
2017-04-21 18:17:18 +00:00
|
|
|
ret, err := dbIsValidJam(nm)
|
|
|
|
return ret && err != nil
|
2017-04-03 21:32:13 +00:00
|
|
|
}
|
|
|
|
|
2017-04-21 18:17:18 +00:00
|
|
|
func dbGetCurrentJam() (string, error) {
|
2017-04-03 21:32:13 +00:00
|
|
|
if err := db.OpenDB(); err != nil {
|
2017-04-21 18:17:18 +00:00
|
|
|
return "", err
|
2017-04-03 21:32:13 +00:00
|
|
|
}
|
|
|
|
defer db.CloseDB()
|
|
|
|
|
2017-04-21 18:17:18 +00:00
|
|
|
return db.GetValue([]string{"site"}, "current-jam")
|
2017-04-03 21:32:13 +00:00
|
|
|
}
|
|
|
|
|
2017-04-21 18:17:18 +00:00
|
|
|
func dbIsValidJam(name string) (bool, error) {
|
2017-04-03 21:32:13 +00:00
|
|
|
var err error
|
|
|
|
if err = db.OpenDB(); err != nil {
|
2017-04-21 18:17:18 +00:00
|
|
|
return false, err
|
2017-04-03 21:32:13 +00:00
|
|
|
}
|
|
|
|
defer db.CloseDB()
|
|
|
|
|
2017-04-21 18:17:18 +00:00
|
|
|
// Get all keys in the jams bucket
|
|
|
|
var keys []string
|
|
|
|
if keys, err = db.GetKeyList([]string{"jams", name}); err != nil {
|
|
|
|
return false, err
|
|
|
|
}
|
|
|
|
// All valid gamejams will have:
|
|
|
|
// "name"
|
|
|
|
// "teams"
|
|
|
|
for _, v := range []string{"name", "teams"} {
|
|
|
|
found := false
|
|
|
|
for j := range keys {
|
|
|
|
if keys[j] == v {
|
|
|
|
found = true
|
|
|
|
break
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if !found {
|
|
|
|
// If we make it here, we didn't find a key we need
|
|
|
|
return false, nil
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return true, nil
|
2017-04-03 21:32:13 +00:00
|
|
|
}
|