diff --git a/persistence/album_repository.go b/persistence/album_repository.go index b3ce5715a..0d3fe8aa1 100644 --- a/persistence/album_repository.go +++ b/persistence/album_repository.go @@ -29,6 +29,6 @@ func (r *albumRepository) Get(id string) (*domain.Album, error) { func (r *albumRepository) FindByArtist(artistId string) ([]domain.Album, error) { var as = make([]domain.Album, 0) - err := r.loadChildren("artist", artistId, &as, "Year") + err := r.loadChildren("artist", artistId, &as, "Year", false) return as, err } diff --git a/persistence/base_repository.go b/persistence/base_repository.go index d051396ab..9adee0e48 100644 --- a/persistence/base_repository.go +++ b/persistence/base_repository.go @@ -127,24 +127,24 @@ func (r *baseRepository) toEntity(response [][]byte, entity interface{}) error { return utils.ToStruct(record, entity) } -func (r *baseRepository) loadAll(entities interface{}, sortBy string) error { +func (r *baseRepository) loadAll(entities interface{}, sortBy string, alpha bool) error { setName := r.table + "s:all" - return r.loadFromSet(setName, entities, sortBy) + return r.loadFromSet(setName, entities, sortBy, alpha) } -func (r* baseRepository) loadChildren(parentTable string, parentId string, entities interface{}, sortBy string) error { +func (r* baseRepository) loadChildren(parentTable string, parentId string, entities interface{}, sortBy string, alpha bool) error { setName := fmt.Sprintf("%s:%s:%ss", parentTable, parentId, r.table) - return r.loadFromSet(setName, entities, sortBy) + return r.loadFromSet(setName, entities, sortBy, alpha) } // TODO Optimize it! Probably very slow (and confusing!) -func (r *baseRepository) loadFromSet(setName string, entities interface{}, sortBy string) error { +func (r *baseRepository) loadFromSet(setName string, entities interface{}, sortBy string, alpha bool) error { reflected := reflect.ValueOf(entities).Elem() var sortKey []byte = nil if sortBy != "" { sortKey = []byte(fmt.Sprintf("%s:*:%s", r.table, sortBy)) } - response, err := db().XSSort([]byte(setName), 0, 0, true, false, sortKey, r.getFieldKeys("*")) + response, err := db().XSSort([]byte(setName), 0, 0, alpha, false, sortKey, r.getFieldKeys("*")) if err != nil { return err } diff --git a/persistence/base_repository_test.go b/persistence/base_repository_test.go index e0a8ed721..ca67623dc 100644 --- a/persistence/base_repository_test.go +++ b/persistence/base_repository_test.go @@ -131,7 +131,7 @@ func TestBaseRepository(t *testing.T) { Convey("When I call loadAll", func() { var es = make([]TestEntity, 0) - err := repo.loadAll(&es, "") + err := repo.loadAll(&es, "", false) Convey("Then It should not return any error", func() { So(err, ShouldBeNil) }) diff --git a/persistence/index_repository.go b/persistence/index_repository.go index af1c13d8e..a1cb2ff42 100644 --- a/persistence/index_repository.go +++ b/persistence/index_repository.go @@ -33,7 +33,7 @@ func (r *artistIndexRepository) Get(id string) (*domain.ArtistIndex, error) { func (r *artistIndexRepository) GetAll() ([]domain.ArtistIndex, error) { var indices = make([]domain.ArtistIndex, 0) - err := r.loadAll(&indices, "") + err := r.loadAll(&indices, "", true) return indices, err } diff --git a/persistence/mediafile_repository.go b/persistence/mediafile_repository.go index 8a1978ad0..13a6f61d3 100644 --- a/persistence/mediafile_repository.go +++ b/persistence/mediafile_repository.go @@ -20,6 +20,6 @@ func (r *mediaFileRepository) Put(m *domain.MediaFile) error { func (r *mediaFileRepository) FindByAlbum(albumId string) ([]domain.MediaFile, error) { var mfs = make([]domain.MediaFile, 0) - err := r.loadChildren("album", albumId, &mfs, "Track") + err := r.loadChildren("album", albumId, &mfs, "Track", false) return mfs, err }