Packages
xandra
0.4.3
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/prepared/cache.ex
defmodule Xandra.Prepared.Cache do
@moduledoc false
alias Xandra.Prepared
@type t :: :ets.tid
@spec new() :: t
def new() do
:ets.new(__MODULE__, [:set, :public, read_concurrency: true])
end
@spec insert(t, Prepared.t) :: :ok
def insert(table, %Prepared{} = prepared) do
%{statement: statement,
id: id,
bound_columns: bound_columns,
result_columns: result_columns} = prepared
:ets.insert(table, {statement, id, bound_columns, result_columns})
:ok
end
@spec lookup(t, Prepared.t) :: {:ok, Prepared.t} | :error
def lookup(table, %Prepared{statement: statement} = prepared) do
case :ets.lookup(table, statement) do
[{^statement, id, bound_columns, result_columns}] ->
{:ok, %{prepared | id: id, bound_columns: bound_columns, result_columns: result_columns}}
[] ->
:error
end
end
@spec delete(t, Prepared.t) :: :ok
def delete(table, %Prepared{statement: statement}) do
:ets.delete(table, statement)
:ok
end
end