diff --git a/repositories/base_repository.go b/repositories/base_repository.go index b275504f1..a9882a597 100644 --- a/repositories/base_repository.go +++ b/repositories/base_repository.go @@ -6,7 +6,11 @@ type BaseRepository struct { func (r *BaseRepository) saveOrUpdate(id string, rec interface{}) error { - return saveStruct(r.key + "_id_" + id, rec) + return saveStruct(r.key, id, rec) +} + +func (r *BaseRepository) CountAll() (int, error) { + return count(r.key) } func (r *BaseRepository) Dump() { diff --git a/repositories/ledis_database.go b/repositories/ledis_database.go index 2beaf6d08..f5709aa40 100644 --- a/repositories/ledis_database.go +++ b/repositories/ledis_database.go @@ -28,7 +28,7 @@ func db() *ledis.DB { return _dbInstance } -func saveStruct(key string, data interface{}) error { +func saveStruct(key, id string, data interface{}) error { h, err := utils.ToMap(data) if err != nil { return err @@ -40,7 +40,10 @@ func saveStruct(key string, data interface{}) error { fvList[i].Value, _ = json.Marshal(v) i++ } - return db().HMset([]byte(key), fvList...) + kh := key + "_id_" + id + ks := key + "_ids" + db().SAdd([]byte(ks), []byte(id)) + return db().HMset([]byte(kh), fvList...) } func readStruct(key string) (interface{}, error) { @@ -55,6 +58,11 @@ func readStruct(key string) (interface{}, error) { return utils.ToStruct(m) } +func count(key string) (int, error) { + ids, err := db().SMembers([]byte(key + "_ids")) + return len(ids), err +} + func hset(key, field, value string) error { _, err := db().HSet([]byte(key), []byte(field), []byte(value)) return err diff --git a/scanner/scanner.go b/scanner/scanner.go index 5a6884f2e..532cd5341 100644 --- a/scanner/scanner.go +++ b/scanner/scanner.go @@ -5,8 +5,6 @@ import ( "github.com/deluan/gosonic/repositories" "github.com/deluan/gosonic/models" "strings" - "fmt" - "encoding/json" ) type Scanner interface { @@ -46,8 +44,10 @@ func updateDatastore(files []Track) { collectIndex(m, artistIndex) } //mfRepo.Dump() - j,_ := json.MarshalIndent(artistIndex, "", " ") - fmt.Println(string(j)) + //j,_ := json.MarshalIndent(artistIndex, "", " ") + //fmt.Println(string(j)) + c, _ := mfRepo.CountAll() + beego.Info("Total mediafiles in database:", c) } func collectIndex(m *models.MediaFile, artistIndex map[string]map[string]string) {