forgeplus/app/controllers/concerns/ci/db_connectable.rb

60 lines
2.2 KiB
Ruby
Raw Normal View History

2020-09-18 15:46:36 +08:00
module Ci::DbConnectable
extend ActiveSupport::Concern
2020-12-10 18:05:33 +08:00
included do
2020-09-18 15:46:36 +08:00
end
# Dynamically sets the database connection.
2020-09-22 15:50:16 +08:00
def connect_to_ci_database(options={})
master_db = options[:master_db] || false
2020-09-18 16:40:54 +08:00
config = Rails.application.config_for(:configuration).symbolize_keys!
2020-09-18 16:44:38 +08:00
db_config = config[:ci_db_server].symbolize_keys!
2020-09-18 16:40:54 +08:00
raise 'ci database config missing' if db_config.blank?
2020-09-18 15:46:36 +08:00
req_params = {
2020-09-18 16:50:35 +08:00
host: db_config[:host],
username: db_config[:username],
password: db_config[:password],
2020-09-22 15:50:16 +08:00
port: db_config[:port]
2020-09-18 15:46:36 +08:00
}
db_name = options[:db_name].blank? ? current_user.login : options[:db_name]
req_params = req_params.merge(database: "#{db_name}_#{db_config[:database]}") unless master_db === true
2020-09-22 15:50:16 +08:00
2020-09-18 15:46:36 +08:00
db_params = Ci::Database.get_connection_params(req_params)
2020-09-22 15:50:16 +08:00
@connection = Ci::Database.set_connection(db_params).connection
2020-09-18 15:46:36 +08:00
end
def connect_to_trustie_ci_database(options={})
master_db = options[:master_db] || false
config = Rails.application.config_for(:configuration).symbolize_keys!
db_config = config[:ci_db_server_trustie].symbolize_keys!
raise 'ci database config missing' if db_config.blank?
req_params = {
host: db_config[:host],
username: db_config[:username],
password: db_config[:password],
port: db_config[:port]
}
req_params = req_params.merge(database: "#{db_config[:database]}") unless master_db === true
db_params = Ci::Database.get_connection_params(req_params)
@trustie_db_connection = Ci::Database.set_connection(db_params).connection
end
2020-09-22 15:50:16 +08:00
def auto_create_database!(connection, database)
2020-09-22 16:15:30 +08:00
Rails.logger.info "[CI::DbConnectable] auto_create_database's connection: #{connection}"
connection.execute("CREATE DATABASE IF NOT EXISTS #{database}")
2020-09-22 15:50:16 +08:00
end
2020-09-22 11:59:33 +08:00
2020-09-22 15:50:16 +08:00
def auto_create_table_structure!(connection)
2020-09-22 16:15:30 +08:00
Rails.logger.info "[CI::DbConnectable] auto_create_table_structure's connection: #{connection}"
2020-09-22 11:59:33 +08:00
sqls = Ci::Schema.statement.split(';').map(&:strip).reject { |e| e.to_s.empty? }
sqls.each do |sql|
2020-09-22 15:50:16 +08:00
con_result = connection.execute(sql)
2020-09-22 11:59:33 +08:00
Rails.logger.info "=============> ci create tabels result: #{con_result}"
end
end
2020-09-18 15:46:36 +08:00
end