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
82 83 84 |
# File 'lib/clickhouse_ruby/active_record/railtie.rb', line 82 def self.using_database_configurations? true end |
Instance Method Details
#charset(_master_configuration_hash = configuration_hash) ⇒ Object
Charset (not applicable to ClickHouse)
182 183 184 |
# File 'lib/clickhouse_ruby/active_record/railtie.rb', line 182 def charset(_master_configuration_hash = configuration_hash) 'UTF-8' end |
#collation(_master_configuration_hash = configuration_hash) ⇒ Object
Collation (not applicable to ClickHouse)
187 188 189 |
# File 'lib/clickhouse_ruby/active_record/railtie.rb', line 187 def collation(_master_configuration_hash = configuration_hash) nil end |
#create(master_configuration_hash = configuration_hash) ⇒ Object
Create a ClickHouse database
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'lib/clickhouse_ruby/active_record/railtie.rb', line 89 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.message}" end |
#drop(master_configuration_hash = configuration_hash) ⇒ Object
Drop a ClickHouse database
112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
# File 'lib/clickhouse_ruby/active_record/railtie.rb', line 112 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.message}" end |
#purge(master_configuration_hash = configuration_hash) ⇒ Object
Purge (drop and recreate) a ClickHouse database
133 134 135 136 |
# File 'lib/clickhouse_ruby/active_record/railtie.rb', line 133 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)
142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 |
# File 'lib/clickhouse_ruby/active_record/railtie.rb', line 142 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
164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 |
# File 'lib/clickhouse_ruby/active_record/railtie.rb', line 164 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 |