diff options
Diffstat (limited to 'lib/click_house/connection.rb')
-rw-r--r-- | lib/click_house/connection.rb | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/lib/click_house/connection.rb b/lib/click_house/connection.rb new file mode 100644 index 00000000000..79551326d2d --- /dev/null +++ b/lib/click_house/connection.rb @@ -0,0 +1,36 @@ +# frozen_string_literal: true + +module ClickHouse + class Connection + def initialize(database, configuration = ClickHouse::Client.configuration) + @database = database + @configuration = configuration + end + + def select(query) + ClickHouse::Client.select(query, database, configuration) + end + + def execute(query) + ClickHouse::Client.execute(query, database, configuration) + end + + def table_exists?(table_name) + raw_query = <<~SQL.squish + SELECT 1 FROM system.tables + WHERE name = {table_name: String} AND database = {database_name: String} + SQL + + database_name = configuration.databases[database]&.database + placeholders = { table_name: table_name, database_name: database_name } + + query = ClickHouse::Client::Query.new(raw_query: raw_query, placeholders: placeholders) + + select(query).any? + end + + private + + attr_reader :database, :configuration + end +end |