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:
Claudio Ortolina
2026-01-21 16:09:35 +00:00
parent 1ec804c1d7
commit 57f138e597
+12 -6
View File
@@ -97,18 +97,24 @@ defmodule MusicLibrary.Records do
escaped_artist = fts_escape(artist)
search
|> where(fragment("records_search_index MATCH 'artists : ' || ?", ^escaped_artist))
|> or_where(
fragment("records_search_index MATCH 'normalized_artists : ' || ?", ^escaped_artist)
|> where(
fragment(
"records_search_index MATCH 'artists : ' || ? OR records_search_index MATCH 'normalized_artists : ' || ?",
^escaped_artist,
^escaped_artist
)
)
{:album, album}, search ->
escaped_album = fts_escape(album)
search
|> where(fragment("records_search_index MATCH 'title : ' || ?", ^escaped_album))
|> or_where(
fragment("records_search_index MATCH 'normalized_title : ' || ?", ^escaped_album)
|> where(
fragment(
"records_search_index MATCH 'title : ' || ? OR records_search_index MATCH 'normalized_title : ' || ?",
^escaped_album,
^escaped_album
)
)
{:genre, genre}, search ->