Packages
xandra
0.18.0-rc.2
0.19.4
0.19.3
0.19.2
0.19.1
0.19.0
0.18.1
0.18.0
0.18.0-rc.9
0.18.0-rc.8
0.18.0-rc.7
0.18.0-rc.6
0.18.0-rc.5
0.18.0-rc.4
0.18.0-rc.3
0.18.0-rc.2
0.18.0-rc.1
0.17.0
0.16.0
0.15.0
0.15.0-rc.1
0.14.0
0.13.1
0.13.0
0.12.0
0.11.0
0.10.1
0.10.0
0.9.2
0.9.1
0.9.0
0.8.0
0.7.2
0.7.1
0.7.0
0.6.1
0.6.0
0.5.1
0.5.0
0.4.3
0.4.2
0.4.1
0.4.0
0.3.2
0.3.1
0.3.0
0.2.0
0.1.0
Fast, simple, and robust Cassandra driver for Elixir.
Current section
Files
Jump to
Current section
Files
lib/xandra/simple.ex
defmodule Xandra.Simple do
@moduledoc """
A data structure used internally to represent simple queries.
"""
alias Xandra.Frame
defstruct [
:statement,
:values,
:default_consistency,
:protocol_module,
:compressor,
:custom_payload
]
@typedoc """
The type for a simple query.
The fields of this are not meant to be used, but are documented to avoid
Dialyzer warnings.
"""
@type t :: %__MODULE__{
statement: Xandra.statement(),
values: Xandra.values() | nil,
default_consistency: atom() | nil,
protocol_module: module() | nil,
compressor: module() | nil,
custom_payload: Xandra.custom_payload() | nil
}
@doc false
@spec encode(t(), Xandra.values(), keyword()) :: iodata()
def encode(%__MODULE__{} = query, values, options) when is_list(options) do
Frame.new(:query,
tracing: options[:tracing],
stream_id: Keyword.get(options, :stream_id, 0),
compressor: query.compressor,
custom_payload: query.custom_payload
)
|> query.protocol_module.encode_request(%__MODULE__{query | values: values}, options)
|> Frame.encode(query.protocol_module)
end
end