Rheo.Page (rheo v1.0.0)

Copy Markdown View Source

One page of query results with an optional continuation cursor.

Returned by Rheo.query_page/2. When next_cursor is non-nil, pass it as cursor: on the next Rheo.Query (or via Rheo.query_page/2 opts) to fetch the following page. Cursor pagination assumes ascending sequence order.

next_cursor is a composite %{partition => after_sequence} map so a page boundary never splits a sequence across partitions. The legacy %{after_sequence: n} shape is still accepted as a global lower bound when applying a cursor.

Fields

FieldTypeMeaning
events[Rheo.Event.t()]Events on this page (may be empty)
next_cursorcursor() | nilPass as cursor: for the next page; nil means done

Cursor shapes

# Composite (preferred): exclusive lower bound per partition
%{0 => 10, 1 => 4}

# Legacy global lower bound (still accepted on apply)
%{after_sequence: 10}

Example

iex> page = %Rheo.Page{
...>   events: [],
...>   next_cursor: %{0 => 5, 1 => 2}
...> }
iex> page.next_cursor[0]
5

Summary

Types

Continuation cursor for Rheo.query_page/2.

t()

One page of events plus an optional next_cursor.

Types

cursor()

@type cursor() :: %{optional(non_neg_integer() | atom() | String.t()) => term()}

Continuation cursor for Rheo.query_page/2.

Prefer %{partition => after_sequence}. Legacy %{after_sequence: n} remains accepted by Rheo.Query.apply_cursor/1 as a global lower bound.

t()

@type t() :: %Rheo.Page{events: [Rheo.Event.t()], next_cursor: cursor() | nil}

One page of events plus an optional next_cursor.

See the module documentation for field meanings and cursor shapes.