Class: ClickhouseRuby::ActiveRecord::DatabaseTasks
- Inherits:
-
Object
- Object
- ClickhouseRuby::ActiveRecord::DatabaseTasks
- Defined in:
- lib/clickhouse_ruby/active_record/railtie.rb
Overview
Database tasks for Rails (db:create, db:drop, etc.)
Class Method Summary collapse
Instance Method Summary collapse
-
#charset(_master_configuration_hash = configuration_hash) ⇒ Object
Charset (not applicable to ClickHouse).
-
#collation(_master_configuration_hash = configuration_hash) ⇒ Object
Collation (not applicable to ClickHouse).
-
#create(master_configuration_hash = configuration_hash) ⇒ Object
Create a ClickHouse database.
-
#drop(master_configuration_hash = configuration_hash) ⇒ Object
Drop a ClickHouse database.
-
#purge(master_configuration_hash = configuration_hash) ⇒ Object
Purge (drop and recreate) a ClickHouse database.
-
#structure_dump(master_configuration_hash, filename) ⇒ Object
Return structure dump (schema).
-
#structure_load(master_configuration_hash, filename) ⇒ Object
Load structure from dump file.
Class Method Details
.using_database_configurations? ⇒ Boolean
101 102 103 |
# File 'lib/clickhouse_ruby/active_record/railtie.rb', line 101 def self.using_database_configurations? true end |
Instance Method Details
#charset(_master_configuration_hash = configuration_hash) ⇒ Object
Charset (not applicable to ClickHouse)
201 202 203 |
# File 'lib/clickhouse_ruby/active_record/railtie.rb', line 201 def charset(_master_configuration_hash = configuration_hash) "UTF-8" end |
#collation(_master_configuration_hash = configuration_hash) ⇒ Object
Collation (not applicable to ClickHouse)
206 207 208 |
# File 'lib/clickhouse_ruby/active_record/railtie.rb', line 206 def collation(_master_configuration_hash = configuration_hash) nil end |
#create(master_configuration_hash = configuration_hash) ⇒ Object
Create a ClickHouse database
108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/clickhouse_ruby/active_record/railtie.rb', line 108 def create(master_configuration_hash = configuration_hash) config = master_configuration_hash.symbolize_keys database = config[:database] return if database.nil? || database.empty? # Connect without database to create it temp_config = config.dup temp_config[:database] = "default" adapter = ConnectionAdapter.new(nil, nil, nil, temp_config) adapter.connect adapter.create_database(database, if_not_exists: true) adapter.disconnect! puts "Created database '#{database}'" rescue ClickhouseRuby::Error => e raise "Failed to create database '#{database}': #{e.}" end |
#drop(master_configuration_hash = configuration_hash) ⇒ Object
Drop a ClickHouse database
131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
# File 'lib/clickhouse_ruby/active_record/railtie.rb', line 131 def drop(master_configuration_hash = configuration_hash) config = master_configuration_hash.symbolize_keys database = config[:database] return if database.nil? || database.empty? # Connect without database to drop it temp_config = config.dup temp_config[:database] = "default" adapter = ConnectionAdapter.new(nil, nil, nil, temp_config) adapter.connect adapter.drop_database(database, if_exists: true) adapter.disconnect! puts "Dropped database '#{database}'" rescue ClickhouseRuby::Error => e raise "Failed to drop database '#{database}': #{e.}" end |
#purge(master_configuration_hash = configuration_hash) ⇒ Object
Purge (drop and recreate) a ClickHouse database
152 153 154 155 |
# File 'lib/clickhouse_ruby/active_record/railtie.rb', line 152 def purge(master_configuration_hash = configuration_hash) drop(master_configuration_hash) create(master_configuration_hash) end |
#structure_dump(master_configuration_hash, filename) ⇒ Object
Return structure dump (schema)
161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 |
# File 'lib/clickhouse_ruby/active_record/railtie.rb', line 161 def structure_dump(master_configuration_hash, filename) config = master_configuration_hash.symbolize_keys adapter = ConnectionAdapter.new(nil, nil, nil, config) adapter.connect File.open(filename, "w") do |file| # Dump each table's CREATE statement adapter.tables.each do |table_name| result = adapter.execute("SHOW CREATE TABLE #{adapter.quote_table_name(table_name)}") create_statement = result.first["statement"] || result.first["Create Table"] file.puts "#{create_statement};\n\n" end end adapter.disconnect! end |
#structure_load(master_configuration_hash, filename) ⇒ Object
Load structure from dump file
183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 |
# File 'lib/clickhouse_ruby/active_record/railtie.rb', line 183 def structure_load(master_configuration_hash, filename) config = master_configuration_hash.symbolize_keys adapter = ConnectionAdapter.new(nil, nil, nil, config) adapter.connect # Read and execute each statement sql = File.read(filename) statements = sql.split(/;\s*\n/).reject(&:empty?) statements.each do |statement| adapter.execute(statement.strip) unless statement.strip.empty? end adapter.disconnect! end |