diff --git a/compose.yml b/compose.yml index 4b83171..a3db407 100644 --- a/compose.yml +++ b/compose.yml @@ -1,6 +1,6 @@ services: typesense: - image: typesense/typesense:27.1 + image: typesense/typesense:29.0 command: --data-dir /tmp --api-key=hexdocs ports: - 8108:8108 diff --git a/lib/hexdocs/search/typesense.ex b/lib/hexdocs/search/typesense.ex index c38e77a..d2a1de9 100644 --- a/lib/hexdocs/search/typesense.ex +++ b/lib/hexdocs/search/typesense.ex @@ -27,13 +27,17 @@ defmodule Hexdocs.Search.Typesense do {:ok, 200, _resp_headers, ndjson} -> ndjson |> String.split("\n") - |> Enum.each(fn json -> - case :json.decode(json) do + |> Enum.zip(search_items) + |> Enum.each(fn {response, search_item} -> + case :json.decode(response) do %{"success" => true} -> :ok - %{"success" => false, "error" => error, "document" => document} -> - raise "Failed to index search item for #{package} #{version} for document #{inspect(document)}: #{inspect(error)}" + %{"success" => false, "error" => error} -> + error = if is_binary(error), do: error, else: inspect(error) + + raise "Failed to index search item #{inspect(search_item)} for #{package} #{version}: " <> + error end end) diff --git a/test/hexdocs/search_test.exs b/test/hexdocs/search_test.exs index 435fa31..e28290d 100644 --- a/test/hexdocs/search_test.exs +++ b/test/hexdocs/search_test.exs @@ -249,7 +249,8 @@ defmodule Hexdocs.SearchTest do } ]} - assert msg =~ "Failed to index search item for #{package} 1.0.0 for document " + assert msg =~ "Failed to index search item " + assert msg =~ " for #{package} 1.0.0: " assert msg =~ "Field `doc` has been declared in the schema, but is not found in the document." end @@ -281,7 +282,8 @@ defmodule Hexdocs.SearchTest do } ]} - assert msg =~ "Failed to index search item for #{package} 1.0.0 for document " + assert msg =~ "Failed to index search item " + assert msg =~ " for #{package} 1.0.0: " assert msg =~ "Field `type` must be a string." end