View Source Xandra.Page (Xandra v0.18.0)

A struct that represents a page of rows.

This struct represents a page of rows that have been returned by the Cassandra server in response to a query such as SELECT, but have not yet been parsed into Elixir values.

This struct implements the Enumerable protocol and is therefore a stream. It is through this protocol that a Xandra.Page struct can be parsed into Elixir values. The simplest way of getting a list of single rows out of a Xandra.Page struct is to use something like Enum.to_list/1. Each element emitted when streaming out of a Xandra.Page struct is a map of string column names to their corresponding value.

See %Xandra.Page{} for information about which fields are public.

Examples

statement = "SELECT name, age FROM users"

%Xandra.Page{} = page = Xandra.execute!(conn, statement, _params = [])

Enum.each(page, fn %{"name" => name, "age" => age} ->
  IO.puts("Read user with name #{name} (age #{age}) out of the database")
end)

Summary

Types

The paging state of a page.

t()

The type for the page struct.

Functions

The page struct.

Types

@type paging_state() :: binary()

The paging state of a page.

This is intended to be an "opaque" binary value that you can use for further pagination. See Xandra.execute/4.

@type t() :: %Xandra.Page{
  columns: [column()] | nil,
  content: [term()],
  custom_payload: Xandra.custom_payload() | nil,
  paging_state: paging_state() | nil,
  tracing_id: binary() | nil
}

The type for the page struct.

The only public fields here are :paging_state and :tracing_id. See %Xandra.Page{}.

Functions

The page struct.

The following fields are public and can be accessed or relied on:

  • :paging_state - the current paging state, or nil if no paging is occurring. Its value can be used to check whether more pages are available to fetch after the given page. This is useful when implementing manual paging. See also the documentation for Xandra.execute/4.

  • :tracing_id - the tracing ID (as a UUID binary) if tracing was enabled, or nil if no tracing was enabled. See the "Tracing" section in Xandra.execute/4.