DDD.Page (vicander v0.1.1)

Copy Markdown View Source

One numbered page of a listing, with the totals. Returned by page/1 on repository adapters and projections:

{:ok, %DDD.Page{entries: lists, page: 2, page_size: 20, total_entries: 57, total_pages: 3}} =
  TodoListRepository.page(filter: [owner_id: id], order: [desc: :created_at], page: 2)

Counting makes this one extra query. For long or hot listings prefer DDD.Slice, which has no totals and doesn't slow down on deep pages.

Summary

Functions

True when a later page exists.

True when an earlier page exists.

Types

t()

@type t() :: %DDD.Page{
  entries: [term()],
  page: pos_integer(),
  page_size: pos_integer(),
  total_entries: non_neg_integer(),
  total_pages: non_neg_integer()
}

Functions

has_next?(page)

@spec has_next?(t()) :: boolean()

True when a later page exists.

has_previous?(page)

@spec has_previous?(t()) :: boolean()

True when an earlier page exists.