diff --git a/api/responses/responses.go b/api/responses/responses.go index d8173027e..8bd446b4e 100644 --- a/api/responses/responses.go +++ b/api/responses/responses.go @@ -46,6 +46,11 @@ type MusicFolders struct { type Artist struct { Id string `xml:"id,attr" json:"id"` Name string `xml:"name,attr" json:"name"` + /* + + + + */ } type Index struct { diff --git a/api/search.go b/api/searching.go similarity index 51% rename from api/search.go rename to api/searching.go index 384b6cb1c..1bf35a62c 100644 --- a/api/search.go +++ b/api/searching.go @@ -21,38 +21,38 @@ func (c *SearchingController) Search2() { query := c.RequiredParamString("query", "Parameter query required") artistCount := c.ParamInt("artistCount", 20) artistOffset := c.ParamInt("artistOffset", 0) - //albumCount := c.ParamInt("albumCount", 20) - //albumOffset := c.ParamInt("albumOffset", 0) - //songCount := c.ParamInt("songCount", 20) - //songOffset := c.ParamInt("songOffset", 0) + albumCount := c.ParamInt("albumCount", 20) + albumOffset := c.ParamInt("albumOffset", 0) + songCount := c.ParamInt("songCount", 20) + songOffset := c.ParamInt("songOffset", 0) as, err := c.search.SearchArtist(query, artistOffset, artistCount) if err != nil { beego.Error("Error searching for Artists:", err) } - //als, err := c.search.SearchAlbum(query, albumOffset, albumCount) - //if err != nil { - // beego.Error("Error searching for Albums:", err) - //} - //mfs, err := c.search.SearchSong(query, songOffset, songCount) - //if err != nil { - // beego.Error("Error searching for MediaFiles:", err) - //} + als, err := c.search.SearchAlbum(query, albumOffset, albumCount) + if err != nil { + beego.Error("Error searching for Albums:", err) + } + mfs, err := c.search.SearchSong(query, songOffset, songCount) + if err != nil { + beego.Error("Error searching for MediaFiles:", err) + } response := c.NewEmpty() searchResult2 := &responses.SearchResult2{} searchResult2.Artist = make([]responses.Artist, len(*as)) - for i, a := range *as { - searchResult2.Artist[i] = responses.Artist{Id: a.Id, Name: a.Title} + for i, e := range *as { + searchResult2.Artist[i] = responses.Artist{Id: e.Id, Name: e.Title} + } + searchResult2.Album = make([]responses.Child, len(*als)) + for i, e := range *als { + searchResult2.Album[i] = c.ToChild(e) + } + searchResult2.Song = make([]responses.Child, len(*mfs)) + for i, e := range *mfs { + searchResult2.Song[i] = c.ToChild(e) } - //searchResult2.Album = make([]responses.Child, len(*as)) - //for i, a := range *as { - // searchResult2.Album[i] = responses.Child{Id: a.Id, Name: a.Name} - //} - //searchResult2.Artist = make([]responses.Artist, len(*as)) - //for i, a := range *as { - // searchResult2.Artist[i] = responses.Artist{Id: a.Id, Name: a.Name} - //} response.SearchResult2 = searchResult2 c.SendResponse(response) } diff --git a/engine/search.go b/engine/search.go index e89c298fc..14752ab66 100644 --- a/engine/search.go +++ b/engine/search.go @@ -62,12 +62,14 @@ func (s search) IndexMediaFile(mf *domain.MediaFile) error { } func (s search) SearchArtist(q string, offset int, size int) (*Results, error) { - q = strings.TrimSuffix(q, "*") - resp, err := s.sArtist.Search(q) + q = strings.ToLower(strings.TrimSuffix(q, "*")) + min := offset + max := min + size - 1 + resp, err := s.sArtist.Search(q, min, max) if err != nil { return nil, nil } - res := make(Results, 0, len(resp)) + res := make(Results, len(resp)) for i, id := range resp { a, err := s.artistRepo.Get(id) if err != nil { @@ -79,12 +81,14 @@ func (s search) SearchArtist(q string, offset int, size int) (*Results, error) { } func (s search) SearchAlbum(q string, offset int, size int) (*Results, error) { - q = strings.TrimSuffix(q, "*") - resp, err := s.sAlbum.Search(q) + q = strings.ToLower(strings.TrimSuffix(q, "*")) + min := offset + max := min + size - 1 + resp, err := s.sAlbum.Search(q, min, max) if err != nil { return nil, nil } - res := make(Results, 0, len(resp)) + res := make(Results, len(resp)) for i, id := range resp { al, err := s.albumRepo.Get(id) if err != nil { @@ -96,12 +100,14 @@ func (s search) SearchAlbum(q string, offset int, size int) (*Results, error) { } func (s search) SearchSong(q string, offset int, size int) (*Results, error) { - q = strings.TrimSuffix(q, "*") - resp, err := s.sSong.Search(q) + q = strings.ToLower(strings.TrimSuffix(q, "*")) + min := offset + max := min + size - 1 + resp, err := s.sSong.Search(q, min, max) if err != nil { return nil, nil } - res := make(Results, 0, len(resp)) + res := make(Results, len(resp)) for i, id := range resp { mf, err := s.mfileRepo.Get(id) if err != nil {