85 lines
1.5 KiB
Go
85 lines
1.5 KiB
Go
package main
|
|
|
|
import (
|
|
"errors"
|
|
"strings"
|
|
|
|
"github.com/br0xen/boltease"
|
|
)
|
|
|
|
var db *boltease.DB
|
|
var dbOpened int
|
|
|
|
func openDatabase() error {
|
|
dbOpened += 1
|
|
if dbOpened == 1 {
|
|
var err error
|
|
db, err = boltease.Create(site.DB, 0600, nil)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func closeDatabase() error {
|
|
dbOpened -= 1
|
|
if dbOpened == 0 {
|
|
return db.CloseDB()
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func initDatabase() error {
|
|
var err error
|
|
if err = openDatabase(); err != nil {
|
|
return err
|
|
}
|
|
defer closeDatabase()
|
|
|
|
// Create the path to the bucket to store admin users
|
|
if err := db.MkBucketPath([]string{"users"}); err != nil {
|
|
return err
|
|
}
|
|
// Create the path to the bucket to store jam informations
|
|
if err := db.MkBucketPath([]string{"jam"}); err != nil {
|
|
return err
|
|
}
|
|
// Create the path to the bucket to store site config data
|
|
return db.MkBucketPath([]string{"site"})
|
|
}
|
|
|
|
func dbSetCurrentJam(name string) error {
|
|
var err error
|
|
if err = openDatabase(); err != nil {
|
|
return err
|
|
}
|
|
defer closeDatabase()
|
|
|
|
return db.SetValue([]string{"site"}, "current-jam", name)
|
|
}
|
|
|
|
func dbHasCurrentJam() bool {
|
|
var err error
|
|
if _, err = dbGetCurrentJam(); err != nil {
|
|
return false
|
|
}
|
|
return true
|
|
}
|
|
|
|
func dbGetCurrentJam() (string, error) {
|
|
var ret string
|
|
var err error
|
|
if err = openDatabase(); err != nil {
|
|
return "", err
|
|
}
|
|
defer closeDatabase()
|
|
|
|
ret, err = db.GetValue([]string{"site"}, "current-jam")
|
|
|
|
if err == nil && strings.TrimSpace(ret) == "" {
|
|
return ret, errors.New("No Jam Name Specified")
|
|
}
|
|
return ret, err
|
|
}
|