Merge branch 'fix/truncate-remote-user-fields' into 'develop'
[akkoma] / lib / pleroma / pagination.ex
index d21ecf628400bb83913d6f1577655b0b775834ea..b55379c4a96c767978b57c894fd237030b693d6d 100644 (file)
@@ -16,33 +16,41 @@ defmodule Pleroma.Pagination do
 
   def fetch_paginated(query, params, type \\ :keyset)
 
-  def fetch_paginated(query, params, :keyset) do
-    options = cast_params(params)
+  def fetch_paginated(query, %{"total" => true} = params, :keyset) do
     total = Repo.aggregate(query, :count, :id)
 
     %{
       total: total,
-      items:
-        query
-        |> paginate(options, :keyset)
-        |> Repo.all()
-        |> enforce_order(options)
+      items: fetch_paginated(query, Map.drop(params, ["total"]), :keyset)
     }
   end
 
-  def fetch_paginated(query, params, :offset) do
+  def fetch_paginated(query, params, :keyset) do
     options = cast_params(params)
+
+    query
+    |> paginate(options, :keyset)
+    |> Repo.all()
+    |> enforce_order(options)
+  end
+
+  def fetch_paginated(query, %{"total" => true} = params, :offset) do
     total = Repo.aggregate(query, :count, :id)
 
     %{
       total: total,
-      items:
-        query
-        |> paginate(options, :offset)
-        |> Repo.all()
+      items: fetch_paginated(query, Map.drop(params, ["total"]), :offset)
     }
   end
 
+  def fetch_paginated(query, params, :offset) do
+    options = cast_params(params)
+
+    query
+    |> paginate(options, :offset)
+    |> Repo.all()
+  end
+
   def paginate(query, options, method \\ :keyset)
 
   def paginate(query, options, :keyset) do