Resolved bug where null values in search terms would break search (#57)

This commit is contained in:
Kieran 2024-03-07 18:42:20 -08:00 committed by GitHub
parent b7beeaf9eb
commit 128485c30a
2 changed files with 9 additions and 2 deletions

View file

@ -105,9 +105,9 @@ defmodule Pinchflat.Media do
select_merge: %{
matching_search_term:
fragment("""
snippet(media_items_search_index, 0, '[PF_HIGHLIGHT]', '[/PF_HIGHLIGHT]', '...', 20) ||
coalesce(snippet(media_items_search_index, 0, '[PF_HIGHLIGHT]', '[/PF_HIGHLIGHT]', '...', 20), '') ||
' ' ||
snippet(media_items_search_index, 1, '[PF_HIGHLIGHT]', '[/PF_HIGHLIGHT]', '...', 20)
coalesce(snippet(media_items_search_index, 1, '[PF_HIGHLIGHT]', '[/PF_HIGHLIGHT]', '...', 20), '')
""")
},
order_by: [desc: fragment("rank")],

View file

@ -267,6 +267,13 @@ defmodule Pinchflat.MediaTest do
assert String.contains?(res.matching_search_term, "The [PF_HIGHLIGHT]quick[/PF_HIGHLIGHT] brown fox")
end
test "doesn't set matching_search_term to nil if one of the attributes we search on is null" do
media_item_fixture(%{title: "foobar baz", description: nil})
assert [%{matching_search_term: matching_search_term}] = Media.search("baz")
refute is_nil(matching_search_term)
end
test "optionally lets you specify a limit" do
media_item_fixture(%{title: "The small gray dog"})