From 43ce81af67fe7d29bcee694c6f4b2f3e1a831202 Mon Sep 17 00:00:00 2001 From: Deluan Date: Wed, 8 Apr 2020 23:54:54 -0400 Subject: [PATCH] Add all individual artists from album in searchable full text field. Should fix #94 --- model/album.go | 1 - persistence/album_repository.go | 13 +++++-------- persistence/persistence_suite_test.go | 4 ++-- 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/model/album.go b/model/album.go index 37761e6ce..69820cc47 100644 --- a/model/album.go +++ b/model/album.go @@ -34,7 +34,6 @@ type Albums []Album type AlbumRepository interface { CountAll(...QueryOptions) (int64, error) Exists(id string) (bool, error) - Put(m *Album) error Get(id string) (*Album, error) FindByArtist(albumArtistId string) (Albums, error) GetAll(...QueryOptions) (Albums, error) diff --git a/persistence/album_repository.go b/persistence/album_repository.go index 6a131e4b8..92e699c00 100644 --- a/persistence/album_repository.go +++ b/persistence/album_repository.go @@ -65,12 +65,6 @@ func (r *albumRepository) Exists(id string) (bool, error) { return r.exists(Select().Where(Eq{"id": id})) } -func (r *albumRepository) Put(a *model.Album) error { - a.FullText = r.getFullText(a.Name, a.Artist, a.AlbumArtist) - _, err := r.put(a.ID, a) - return err -} - func (r *albumRepository) selectAlbum(options ...model.QueryOptions) SelectBuilder { return r.newSelectWithAnnotation("album.id", options...).Columns("*") } @@ -113,11 +107,13 @@ func (r *albumRepository) Refresh(ids ...string) error { model.Album CurrentId string HasCoverArt bool + SongArtists string } var albums []refreshAlbum sel := Select(`album_id as id, album as name, f.artist, f.album_artist, f.artist_id, f.album_artist_id, f.compilation, f.genre, max(f.year) as max_year, min(f.year) as min_year, sum(f.duration) as duration, - count(*) as song_count, a.id as current_id, f.id as cover_art_id, f.path as cover_art_path, f.has_cover_art`). + count(*) as song_count, a.id as current_id, f.id as cover_art_id, f.path as cover_art_path, + group_concat(f.artist, ' ') as song_artists, f.has_cover_art`). From("media_file f"). LeftJoin("album a on f.album_id = a.id"). Where(Eq{"f.album_id": ids}).GroupBy("album_id").OrderBy("f.id") @@ -147,7 +143,8 @@ func (r *albumRepository) Refresh(ids ...string) error { toInsert++ al.CreatedAt = time.Now() } - err := r.Put(&al.Album) + al.FullText = r.getFullText(al.Name, al.Artist, al.AlbumArtist, al.SongArtists) + _, err := r.put(al.ID, al.Album) if err != nil { return err } diff --git a/persistence/persistence_suite_test.go b/persistence/persistence_suite_test.go index 047e318f6..6b7798ac3 100644 --- a/persistence/persistence_suite_test.go +++ b/persistence/persistence_suite_test.go @@ -95,9 +95,9 @@ var _ = Describe("Initialize test DB", func() { } } - alr := NewAlbumRepository(ctx, o) + alr := NewAlbumRepository(ctx, o).(*albumRepository) for _, a := range testAlbums { - err := alr.Put(&a) + _, err := alr.put(a.ID, &a) if err != nil { panic(err) }