1
Fork 0

Fix bug where search would be case sensitive when using PostgreSQL

This commit is contained in:
viktorstrate 2021-09-02 18:20:10 +02:00
parent adfcf33e79
commit 5eb4bf83f3
No known key found for this signature in database
GPG Key ID: 3F855605109C1E8A
1 changed files with 5 additions and 3 deletions

View File

@ -1,6 +1,8 @@
package actions
import (
"strings"
"github.com/photoview/photoview/api/graphql/models"
"github.com/pkg/errors"
"gorm.io/gorm"
@ -19,7 +21,7 @@ func Search(db *gorm.DB, query string, userID int, _limitMedia *int, _limitAlbum
limitAlbums = *_limitAlbums
}
wildQuery := "%" + query + "%"
wildQuery := "%" + strings.ToLower(query) + "%"
var media []*models.Media
@ -32,10 +34,10 @@ func Search(db *gorm.DB, query string, userID int, _limitMedia *int, _limitAlbum
err := db.Joins("Album").
Where("EXISTS (?)", userSubquery).
Where("media.title LIKE ? OR media.path LIKE ?", wildQuery, wildQuery).
Where("LOWER(media.title) LIKE ? OR LOWER(media.path) LIKE ?", wildQuery, wildQuery).
Clauses(clause.OrderBy{
Expression: clause.Expr{
SQL: "(CASE WHEN media.title LIKE ? THEN 2 WHEN media.path LIKE ? THEN 1 END) DESC",
SQL: "(CASE WHEN LOWER(media.title) LIKE ? THEN 2 WHEN LOWER(media.path) LIKE ? THEN 1 END) DESC",
Vars: []interface{}{wildQuery, wildQuery},
WithoutParentheses: true},
}).