defmodule Plausible.Audit do @moduledoc """ Primary persistent Audit Entry interface """ import Ecto.Query defdelegate encode(term, opts \\ []), to: Plausible.Audit.Encoder defdelegate set_context(term), to: Plausible.Audit.Entry def list_entries(attrs) do attrs |> entries_query() |> Plausible.Repo.all() end def list_entries_paginated(attrs, params \\ %{}) do attrs |> entries_query() |> Plausible.Pagination.paginate(params, cursor_fields: [{:datetime, :desc}]) end defp entries_query(attrs) do from ae in Plausible.Audit.Entry, where: ^attrs, order_by: [desc: :datetime] end end