forked from Gitlink/forgeplus
60 lines
2.2 KiB
Ruby
60 lines
2.2 KiB
Ruby
module Ci::DbConnectable
|
|
extend ActiveSupport::Concern
|
|
|
|
included do
|
|
end
|
|
|
|
# Dynamically sets the database connection.
|
|
def connect_to_ci_database(options={})
|
|
master_db = options[:master_db] || false
|
|
config = Rails.application.config_for(:configuration).symbolize_keys!
|
|
db_config = config[:ci_db_server].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]
|
|
}
|
|
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
|
|
|
|
db_params = Ci::Database.get_connection_params(req_params)
|
|
@connection = Ci::Database.set_connection(db_params).connection
|
|
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
|
|
|
|
def auto_create_database!(connection, database)
|
|
Rails.logger.info "[CI::DbConnectable] auto_create_database's connection: #{connection}"
|
|
connection.execute("CREATE DATABASE IF NOT EXISTS #{database}")
|
|
end
|
|
|
|
def auto_create_table_structure!(connection)
|
|
Rails.logger.info "[CI::DbConnectable] auto_create_table_structure's connection: #{connection}"
|
|
|
|
sqls = Ci::Schema.statement.split(';').map(&:strip).reject { |e| e.to_s.empty? }
|
|
sqls.each do |sql|
|
|
con_result = connection.execute(sql)
|
|
Rails.logger.info "=============> ci create tabels result: #{con_result}"
|
|
end
|
|
end
|
|
end
|