Skip to content

Commit 4ce447e

Browse files
committed
Fall back to page based pagination
1 parent 265876d commit 4ce447e

File tree

4 files changed

+14
-9
lines changed

4 files changed

+14
-9
lines changed

lib/todo_backend/repo.ex

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ defmodule TodoBackend.Repo do
33
otp_app: :todo_backend,
44
adapter: Ecto.Adapters.Postgres
55

6-
use Paginator
6+
use Scrivener, page_size: 10
77
end

lib/todo_backend/task/repository/todo_repo.ex

+6-5
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,12 @@ defmodule TodoBackend.Task.Repository.TodoRepo do
2020
def list_todos(params) do
2121
query = from(t in Todo, preload: [:user], order_by: [desc: t.inserted_at, desc: t.id], select: t)
2222

23-
cond do
24-
params["after"] !== nil -> Repo.paginate(query, after: params["after"], cursor_fields: [:inserted_at, :id], limit: 10)
25-
params["before"] !== nil -> Repo.paginate(query, before: params["before"], cursor_fields: [:inserted_at, :id], limit: 10)
26-
true -> Repo.paginate(query, cursor_fields: [:inserted_at, :id], limit: 10)
27-
end
23+
Repo.paginate(query, params)
24+
# cond do
25+
# params["after"] !== nil -> Repo.paginate(query, after: params["after"], cursor_fields: [:inserted_at, :id], limit: 10)
26+
# params["before"] !== nil -> Repo.paginate(query, before: params["before"], cursor_fields: [:inserted_at, :id], limit: 10)
27+
# true -> Repo.paginate(query, cursor_fields: [:inserted_at, :id], limit: 10)
28+
# end
2829
end
2930

3031
@doc """

lib/todo_backend_web/views/todo_view.ex

+5-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@ defmodule TodoBackendWeb.TodoView do
33
alias TodoBackendWeb.TodoView
44

55
def render("index.json", %{todos: todos}) do
6-
%{data: render_many(todos.entries, TodoView, "todo.json"), metadata: Map.from_struct(todos.metadata)}
6+
%{data: render_many(todos.entries, TodoView, "todo.json"),
7+
metadata: %{page_number: todos.page_number,
8+
page_size: todos.page_size,
9+
total_pages: todos.total_pages,
10+
total_entries: todos.total_entries}}
711
end
812

913
def render("show.json", %{todo: todo}) do

mix.exs

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ defmodule TodoBackend.MixProject do
2020
def application do
2121
[
2222
mod: {TodoBackend.Application, []},
23-
extra_applications: [:logger, :runtime_tools]
23+
extra_applications: [:logger, :runtime_tools, :scrivener_ecto]
2424
]
2525
end
2626

@@ -44,7 +44,7 @@ defmodule TodoBackend.MixProject do
4444
{:comeonin, "~> 5.1.2"},
4545
{:argon2_elixir, "~> 2.0.5"},
4646
{:guardian, "~> 1.2.1"},
47-
{:paginator, "~> 0.6"}
47+
{:scrivener_ecto, "~> 2.0"}
4848
]
4949
end
5050

0 commit comments

Comments
 (0)