class ActiveHouse::Connection

Attributes

config[R]
connection[R]

Public Class Methods

new(config) click to toggle source
# File lib/active_house/connection.rb, line 10
def initialize(config)
  config.assert_valid_keys(:url, :urls, :database, :username, :password, :host, :port, :scheme)
  @config = config
  @connection = nil
  ensure_connected!
end

Public Instance Methods

connection_alive?() click to toggle source
# File lib/active_house/connection.rb, line 47
def connection_alive?
  return false if connection.nil?
  if connection.is_a?(Clickhouse::Cluster)
    !connection.pond.available.empty?
  else
    begin
      connection.ping!
      true
    rescue StandardError
      false
    end
  end
end
execute(sql, *bindings) click to toggle source
# File lib/active_house/connection.rb, line 17
def execute(sql, *bindings)
  prepared_sql = prepared_statement(sql, *bindings)
  connection.execute(prepared_sql)
end
raw_query(sql) click to toggle source
# File lib/active_house/connection.rb, line 43
def raw_query(sql)
  connection.get(sql)
end
reconnect!() click to toggle source
# File lib/active_house/connection.rb, line 61
def reconnect!
  ensure_connected!
end
select_all(sql, *bindings) click to toggle source
# File lib/active_house/connection.rb, line 22
def select_all(sql, *bindings)
  prepared_sql = prepared_statement(sql, *bindings)
  connection.query(prepared_sql)
end
select_row(sql, *bindings) click to toggle source
# File lib/active_house/connection.rb, line 35
def select_row(sql, *bindings)
  select_all(sql, *bindings).to_hashes.first
end
select_rows(sql, *bindings) click to toggle source
# File lib/active_house/connection.rb, line 39
def select_rows(sql, *bindings)
  select_all(sql, *bindings).to_hashes
end
select_value(sql, *bindings) click to toggle source
# File lib/active_house/connection.rb, line 31
def select_value(sql, *bindings)
  select_all(sql, *bindings).flatten.first
end
select_values(sql, *bindings) click to toggle source
# File lib/active_house/connection.rb, line 27
def select_values(sql, *bindings)
  select_all(sql, *bindings).flatten
end

Private Instance Methods

ensure_connected!() click to toggle source
# File lib/active_house/connection.rb, line 73
def ensure_connected!
  @connection = establish_connection unless connection_alive?
  raise ActiveHouse::Exceptions::ConnectionError unless connection_alive?
end
establish_connection() click to toggle source
# File lib/active_house/connection.rb, line 78
def establish_connection
  if config.key?(:urls)
    Clickhouse::Cluster.new(config)
  else
    Clickhouse::Connection.new(config)
  end
end
prepared_statement(sql, *bindings) click to toggle source
# File lib/active_house/connection.rb, line 67
def prepared_statement(sql, *bindings)
  ActiveHouse::PreparedStatement.prepare_sql(sql, *bindings)
end