EctoTurbo.List (EctoTurbo v1.0.0)

View Source

Represents a paginated list response.

Wraps query results with pagination metadata for consistent JSON serialization. EctoTurbo.turbo/3 returns this struct.

The JSON keys for entries and pagination metadata can be customized via the :entry_name and :paginate_name options passed to new/3.

Default JSON Output

{
  "data": [...],
  "pagination": {
    "current_page": 1,
    "current_pages": [1],
    "per_page": 10,
    "next_page": 1,
    "prev_page": 1,
    "total_pages": 1
  },
  "total": 42
}

Custom keys

EctoTurbo.List.new(items, paginate, entry_name: "users", paginate_name: "meta")
# => {"data": [...], "pagination": {...}, "total": 42}

Summary

Functions

Builds a List from raw query results and paginate metadata.

Types

t()

@type t() :: %EctoTurbo.List{
  __type__: term(),
  data: list(),
  entry_name: String.t(),
  paginate_name: String.t(),
  pagination: map(),
  total: non_neg_integer()
}

Functions

new(items, paginate, opts \\ [])

@spec new(list(), map(), keyword()) :: t()

Builds a List from raw query results and paginate metadata.

Options

  • :entry_name — JSON key for the items list (default "data")
  • :paginate_name — JSON key for the pagination map (default "pagination")