diff --git a/engine/search.go b/engine/search.go index aea2ae14..19b2d1d0 100644 --- a/engine/search.go +++ b/engine/search.go @@ -8,9 +8,10 @@ import ( ) type Search interface { + ClearAll() error IndexArtist(ar *domain.Artist) error - //IndexAlbum(al domain.Album) error - //IndexMediaFile(mf domain.MediaFile) error + IndexAlbum(al *domain.Album) error + IndexMediaFile(mf *domain.MediaFile) error } type search struct { @@ -24,6 +25,18 @@ func NewSearch(ar domain.ArtistRepository, alr domain.AlbumRepository, mr domain return search{ar, alr, mr, idx} } -func (s search) IndexArtist(ar *domain.Artist) error { - return s.indexer.Index(ar.Id, strings.ToLower(ar.Name)) +func (s search) ClearAll() error { + return s.indexer.Clear() +} + +func (s search) IndexArtist(ar *domain.Artist) error { + return s.indexer.Index("ar-"+ar.Id, strings.ToLower(ar.Name)) +} + +func (s search) IndexAlbum(al *domain.Album) error { + return s.indexer.Index("al-"+al.Id, strings.ToLower(al.Name)) +} + +func (s search) IndexMediaFile(mf *domain.MediaFile) error { + return s.indexer.Index("mf-"+mf.Id, strings.ToLower(mf.Title)) } diff --git a/scanner/importer.go b/scanner/importer.go index 6103eac4..70f29f67 100644 --- a/scanner/importer.go +++ b/scanner/importer.go @@ -92,6 +92,8 @@ func (i *Importer) importLibrary() (err error) { ars := make(domain.Artists, len(i.scanner.Artists())) pls := make(domain.Playlists, len(i.scanner.Playlists())) + i.search.ClearAll() + beego.Debug("Saving updated data") j := 0 for _, mf := range i.scanner.MediaFiles() { @@ -103,6 +105,9 @@ func (i *Importer) importLibrary() (err error) { if err := i.mfRepo.Put(mf); err != nil { beego.Error(err) } + if err := i.search.IndexMediaFile(mf); err != nil { + beego.Error("Error indexing artist:", err) + } } j = 0 @@ -115,6 +120,9 @@ func (i *Importer) importLibrary() (err error) { if err := i.albumRepo.Put(al); err != nil { beego.Error(err) } + if err := i.search.IndexAlbum(al); err != nil { + beego.Error("Error indexing artist:", err) + } } j = 0