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) 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 ->