diff --git a/lib/scrivener/paginater/ecto/query.ex b/lib/scrivener/paginater/ecto/query.ex index 8f9db3f..ab43025 100644 --- a/lib/scrivener/paginater/ecto/query.ex +++ b/lib/scrivener/paginater/ecto/query.ex @@ -33,8 +33,7 @@ defimpl Scrivener.Paginater, for: Ecto.Query do |> exclude(:preload) |> exclude(:order_by) |> prepare_select - |> subquery - |> select(count("*")) + |> count |> repo.one(caller: caller) total_entries || 0 @@ -43,9 +42,8 @@ defimpl Scrivener.Paginater, for: Ecto.Query do defp prepare_select(query) do try do query - |> subquery - |> select(count("*")) - |> Ecto.Query.Planner.prepare_sources(_adapter = nil) + |> count + |> Ecto.Query.Planner.prepare_sources(nil) query rescue @@ -64,6 +62,12 @@ defimpl Scrivener.Paginater, for: Ecto.Query do end end + defp count(query) do + query + |> subquery + |> select(count("*")) + end + defp total_pages(0, _), do: 1 defp total_pages(total_entries, page_size) do