Add UserList in UI

This commit is contained in:
Deluan
2020-01-19 20:40:18 -05:00
parent 3a03284c59
commit 1c04a19910
13 changed files with 282 additions and 23 deletions
+28 -10
View File
@@ -16,8 +16,9 @@ import (
const batchSize = 100
var (
once sync.Once
driver = "sqlite3"
once sync.Once
driver = "sqlite3"
mappedModels map[interface{}]interface{}
)
type SQLStore struct {
@@ -30,11 +31,12 @@ func New() model.DataStore {
if dbPath == ":memory:" {
dbPath = "file::memory:?cache=shared"
}
log.Debug("Opening DB from: "+dbPath, "driver", driver)
err := initORM(dbPath)
if err != nil {
panic(err)
}
log.Debug("Opening DB from: "+dbPath, "driver", driver)
})
return &SQLStore{}
}
@@ -67,6 +69,10 @@ func (db *SQLStore) Property() model.PropertyRepository {
return NewPropertyRepository(db.getOrmer())
}
func (db *SQLStore) Resource(model interface{}) model.ResourceRepository {
return NewResource(db.getOrmer(), model, mappedModels[model])
}
func (db *SQLStore) WithTx(block func(tx model.DataStore) error) error {
o := orm.NewOrm()
err := o.Begin()
@@ -102,13 +108,6 @@ func (db *SQLStore) getOrmer() orm.Ormer {
func initORM(dbPath string) error {
verbose := conf.Sonic.LogLevel == "trace"
orm.Debug = verbose
orm.RegisterModel(new(artist))
orm.RegisterModel(new(album))
orm.RegisterModel(new(mediaFile))
orm.RegisterModel(new(checksum))
orm.RegisterModel(new(property))
orm.RegisterModel(new(playlist))
orm.RegisterModel(new(Search))
if strings.Contains(dbPath, "postgres") {
driver = "postgres"
}
@@ -129,3 +128,22 @@ func collectField(collection interface{}, getValue func(item interface{}) string
return result
}
func registerModel(model interface{}, mappedModel interface{}) {
mappedModels[model] = mappedModel
orm.RegisterModel(mappedModel)
}
func init() {
mappedModels = map[interface{}]interface{}{}
registerModel(new(model.Artist), new(artist))
registerModel(new(model.Album), new(album))
registerModel(new(model.MediaFile), new(mediaFile))
registerModel(new(model.Property), new(property))
registerModel(new(model.Playlist), new(playlist))
registerModel(model.User{}, new(user))
orm.RegisterModel(new(checksum))
orm.RegisterModel(new(search))
}