Merge branch '1149-oban-job-queue' into 'develop'
[akkoma] / lib / pleroma / pagination.ex
index 2b869ccdcc494c2a9bb158772da59c1167aa7529..b55379c4a96c767978b57c894fd237030b693d6d 100644 (file)
@@ -16,6 +16,15 @@ defmodule Pleroma.Pagination do
 
   def fetch_paginated(query, params, type \\ :keyset)
 
+  def fetch_paginated(query, %{"total" => true} = params, :keyset) do
+    total = Repo.aggregate(query, :count, :id)
+
+    %{
+      total: total,
+      items: fetch_paginated(query, Map.drop(params, ["total"]), :keyset)
+    }
+  end
+
   def fetch_paginated(query, params, :keyset) do
     options = cast_params(params)
 
@@ -25,6 +34,15 @@ defmodule Pleroma.Pagination do
     |> enforce_order(options)
   end
 
+  def fetch_paginated(query, %{"total" => true} = params, :offset) do
+    total = Repo.aggregate(query, :count, :id)
+
+    %{
+      total: total,
+      items: fetch_paginated(query, Map.drop(params, ["total"]), :offset)
+    }
+  end
+
   def fetch_paginated(query, params, :offset) do
     options = cast_params(params)