Packages
pillar
0.23.2
0.40.0
0.39.0
0.38.0
0.37.0
0.36.0
0.35.0
0.34.1
0.34.0
0.33.1
0.33.0
0.32.0
0.31.0
0.30.0
0.29.1
0.29.0
0.28.0
0.27.0
0.26.1
0.26.0
0.25.1
0.25.0
0.24.0
0.23.3
0.23.2
0.23.1
0.23.0
0.22.0
0.21.0
0.20.0
0.19.0
0.18.2
0.18.1
0.18.0
0.17.3
0.17.2
0.17.1
0.17.0
0.16.2
0.16.1
0.16.0
0.15.0
0.14.0
0.13.1
0.13.0
0.12.0
0.11.0
0.10.0
0.9.1
0.9.0
0.8.1
0.8.0
0.7.0
0.6.0
0.5.1
0.5.0
0.4.0
0.3.2
0.3.1
0.3.0
0.2.1
0.2.0
0.1.0
Elixir client for ClickHouse, a fast open-source Online Analytical Processing (OLAP) database management system.
Current section
Files
Jump to
Current section
Files
lib/pillar/pool/worker.ex
defmodule Pillar.Pool.Worker do
@moduledoc false
use GenServer
def start_link(connection_string) do
GenServer.start_link(__MODULE__, connection_string)
end
def init(connection_string_list) when is_list(connection_string_list) do
connection_string = Enum.random(connection_string_list)
{:ok, Pillar.Connection.new(connection_string)}
end
def handle_call({command, query, params, options}, _from, connection) do
result = handle_command(connection, command, query, params, options)
{:reply, result, connection}
end
def handle_cast({command, query, params, options}, connection) do
{:ok, _result} = handle_command(connection, command, query, params, options)
{:noreply, connection}
end
defp handle_command(connection, command, query, params, options)
when command in [:insert, :select, :query] do
case command do
:insert -> Pillar.insert(connection, query, params, options)
:select -> Pillar.select(connection, query, params, options)
:query -> Pillar.query(connection, query, params, options)
end
end
defp handle_command(connection, command, table_name, record_or_records, options)
when command in [:insert_to_table] do
Pillar.insert_to_table(connection, table_name, record_or_records, options)
end
end