diff --git a/scanner/scanner.go b/scanner/scanner.go index f77d94d..96a0a97 100644 --- a/scanner/scanner.go +++ b/scanner/scanner.go @@ -39,7 +39,11 @@ var coverFilenames = map[string]struct{}{ } func decoded(in string) string { - return unidecode.Unidecode(in) + result := unidecode.Unidecode(in) + if result == in { + return "" + } + return result } type Scanner struct { diff --git a/server/handler/handler_sub_by_folder.go b/server/handler/handler_sub_by_folder.go index 02b14c4..269a76e 100644 --- a/server/handler/handler_sub_by_folder.go +++ b/server/handler/handler_sub_by_folder.go @@ -166,8 +166,11 @@ func (c *Controller) SearchTwo(w http.ResponseWriter, r *http.Request) { // search "artists" var artists []*model.Album c.DB. - Where("parent_id = 1 "+ - "AND (right_path || right_path_u_dec) LIKE ?", query). + Where(` + parent_id = 1 + AND (right_path LIKE ? AND + right_path_u_dec LIKE ?) + `, query, query). Offset(getIntParamOr(r, "artistOffset", 0)). Limit(getIntParamOr(r, "artistCount", 20)). Find(&artists) @@ -179,8 +182,11 @@ func (c *Controller) SearchTwo(w http.ResponseWriter, r *http.Request) { // search "albums" var albums []*model.Album c.DB. - Where("tag_artist_id IS NOT NULL "+ - "AND (right_path || right_path_u_dec) LIKE ?", query). + Where(` + tag_artist_id IS NOT NULL + AND (right_path LIKE ? AND + right_path_u_dec LIKE ?) + `, query, query). Offset(getIntParamOr(r, "albumOffset", 0)). Limit(getIntParamOr(r, "albumCount", 20)). Find(&albums) @@ -192,7 +198,10 @@ func (c *Controller) SearchTwo(w http.ResponseWriter, r *http.Request) { var tracks []*model.Track c.DB. Preload("Album"). - Where("(filename || filename_u_dec) LIKE ?", query). + Where(` + filename LIKE ? AND + filename_u_dec LIKE ? + `, query, query). Offset(getIntParamOr(r, "songOffset", 0)). Limit(getIntParamOr(r, "songCount", 20)). Find(&tracks) diff --git a/server/handler/handler_sub_by_tags.go b/server/handler/handler_sub_by_tags.go index 8ec36a0..c135220 100644 --- a/server/handler/handler_sub_by_tags.go +++ b/server/handler/handler_sub_by_tags.go @@ -167,7 +167,10 @@ func (c *Controller) SearchThree(w http.ResponseWriter, r *http.Request) { // search "artists" var artists []*model.Artist c.DB. - Where("(name || name_u_dec) LIKE ?", query). + Where(` + name LIKE ? AND + name_u_dec LIKE ? + `, query, query). Offset(getIntParamOr(r, "artistOffset", 0)). Limit(getIntParamOr(r, "artistCount", 20)). Find(&artists) @@ -180,7 +183,10 @@ func (c *Controller) SearchThree(w http.ResponseWriter, r *http.Request) { var albums []*model.Album c.DB. Preload("TagArtist"). - Where("(tag_title || tag_title_u_dec) LIKE ?", query). + Where(` + tag_title LIKE ? AND + tag_title_u_dec LIKE ? + `, query, query). Offset(getIntParamOr(r, "albumOffset", 0)). Limit(getIntParamOr(r, "albumCount", 20)). Find(&albums) @@ -193,7 +199,10 @@ func (c *Controller) SearchThree(w http.ResponseWriter, r *http.Request) { var tracks []*model.Track c.DB. Preload("Album"). - Where("(tag_title || tag_title_u_dec) LIKE ?", query). + Where(` + tag_title LIKE ? AND + tag_title_u_dec LIKE ? + `, query, query). Offset(getIntParamOr(r, "songOffset", 0)). Limit(getIntParamOr(r, "songCount", 20)). Find(&tracks)