only store differing unidecode and search both cols
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user