Files
navidrome/repositories/init_database.go
T
2016-02-27 03:35:01 -05:00

55 lines
1.0 KiB
Go

package repositories
import (
"github.com/HouzuoGuo/tiedot/db"
"github.com/astaxie/beego"
"sync"
)
var (
_dbInstance *db.DB
once sync.Once
)
func createCollection(name string, ix ...interface{}) *db.Col {
log := false
if dbInstance().Use(name) == nil {
if err := dbInstance().Create(name); err != nil {
beego.Error(err)
}
log = true
}
col := dbInstance().Use(name)
createIndex(col, []string{"Id"}, log)
for _, i := range ix {
switch i := i.(type) {
case string:
createIndex(col, []string{i}, log)
case []string:
createIndex(col, i, log)
default:
beego.Error("Trying to create an Index with an invalid type: ", i)
}
}
return col
}
func createIndex(col *db.Col, path []string, log bool) (err error) {
if err := col.Index(path); err != nil && log {
beego.Error(path, err)
}
return err
}
func dbInstance() *db.DB {
once.Do(func() {
instance, err := db.OpenDB(beego.AppConfig.String("dbPath"))
if err != nil {
panic(err)
}
_dbInstance = instance
})
return _dbInstance
}