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