aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim Filippov <colixer@gmail.com>2019-09-01 21:23:30 +0300
committerMaxim Filippov <colixer@gmail.com>2019-09-01 21:23:30 +0300
commit9c96b17e16a4911d3e20149e1b54b12baaf71617 (patch)
tree22821eff6e7c96680f6c7ae58d28bc4318c797c7
parent4d6e22bb9b718846883e92851ba22e9809b6b93d (diff)
downloadpleroma-9c96b17e16a4911d3e20149e1b54b12baaf71617.tar.gz
Add pagination to logs
-rw-r--r--lib/pleroma/moderation_log.ex29
-rw-r--r--lib/pleroma/web/admin_api/views/moderation_log_view.ex5
2 files changed, 24 insertions, 10 deletions
diff --git a/lib/pleroma/moderation_log.ex b/lib/pleroma/moderation_log.ex
index 89a5e13c3..352cad433 100644
--- a/lib/pleroma/moderation_log.ex
+++ b/lib/pleroma/moderation_log.ex
@@ -15,12 +15,18 @@ defmodule Pleroma.ModerationLog do
end
def get_all(params) do
- params
- |> get_all_query()
- |> maybe_filter_by_date(params)
- |> maybe_filter_by_user(params)
- |> maybe_filter_by_search(params)
- |> Repo.all()
+ base_query =
+ get_all_query()
+ |> maybe_filter_by_date(params)
+ |> maybe_filter_by_user(params)
+ |> maybe_filter_by_search(params)
+
+ query_with_pagination = base_query |> paginate_query(params)
+
+ %{
+ items: Repo.all(query_with_pagination),
+ count: Repo.aggregate(base_query, :count, :id)
+ }
end
defp maybe_filter_by_date(query, %{start_date: nil, end_date: nil}), do: query
@@ -61,14 +67,19 @@ defmodule Pleroma.ModerationLog do
)
end
- defp get_all_query(%{page: page, page_size: page_size}) do
- from(q in __MODULE__,
- order_by: [desc: q.inserted_at],
+ defp paginate_query(query, %{page: page, page_size: page_size}) do
+ from(q in query,
limit: ^page_size,
offset: ^((page - 1) * page_size)
)
end
+ defp get_all_query do
+ from(q in __MODULE__,
+ order_by: [desc: q.inserted_at]
+ )
+ end
+
defp parse_datetime(datetime) do
{:ok, parsed_datetime, _} = DateTime.from_iso8601(datetime)
diff --git a/lib/pleroma/web/admin_api/views/moderation_log_view.ex b/lib/pleroma/web/admin_api/views/moderation_log_view.ex
index b3fc7cfe5..e7752d1f3 100644
--- a/lib/pleroma/web/admin_api/views/moderation_log_view.ex
+++ b/lib/pleroma/web/admin_api/views/moderation_log_view.ex
@@ -8,7 +8,10 @@ defmodule Pleroma.Web.AdminAPI.ModerationLogView do
alias Pleroma.ModerationLog
def render("index.json", %{log: log}) do
- render_many(log, __MODULE__, "show.json", as: :log_entry)
+ %{
+ items: render_many(log.items, __MODULE__, "show.json", as: :log_entry),
+ total: log.count
+ }
end
def render("show.json", %{log_entry: log_entry}) do