Fix search filter precedence bug
Previous version would do: purchase status + normal filter OR normalized filter New version does: purchase status AND (normal filter OR normalized filter)
This commit is contained in:
@@ -97,18 +97,24 @@ defmodule MusicLibrary.Records do
|
|||||||
escaped_artist = fts_escape(artist)
|
escaped_artist = fts_escape(artist)
|
||||||
|
|
||||||
search
|
search
|
||||||
|> where(fragment("records_search_index MATCH 'artists : ' || ?", ^escaped_artist))
|
|> where(
|
||||||
|> or_where(
|
fragment(
|
||||||
fragment("records_search_index MATCH 'normalized_artists : ' || ?", ^escaped_artist)
|
"records_search_index MATCH 'artists : ' || ? OR records_search_index MATCH 'normalized_artists : ' || ?",
|
||||||
|
^escaped_artist,
|
||||||
|
^escaped_artist
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
{:album, album}, search ->
|
{:album, album}, search ->
|
||||||
escaped_album = fts_escape(album)
|
escaped_album = fts_escape(album)
|
||||||
|
|
||||||
search
|
search
|
||||||
|> where(fragment("records_search_index MATCH 'title : ' || ?", ^escaped_album))
|
|> where(
|
||||||
|> or_where(
|
fragment(
|
||||||
fragment("records_search_index MATCH 'normalized_title : ' || ?", ^escaped_album)
|
"records_search_index MATCH 'title : ' || ? OR records_search_index MATCH 'normalized_title : ' || ?",
|
||||||
|
^escaped_album,
|
||||||
|
^escaped_album
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
{:genre, genre}, search ->
|
{:genre, genre}, search ->
|
||||||
|
|||||||
Reference in New Issue
Block a user