class DbVcs::Adapters::Mysql
Public Class Methods
config()
click to toggle source
@return [DbVcs::Adapters::Mysql::Config]
# File lib/db_vcs/adapters/mysql.rb, line 29 def config DbVcs.config.mysql_config end
connection()
click to toggle source
@return [Mysql2::Client]
# File lib/db_vcs/adapters/mysql.rb, line 34 def connection @connection ||= begin require "mysql2" Mysql2::Client.new( host: config.host, username: config.username, port: config.port, password: config.password ) end end
copy_database(to_db, from_db)
click to toggle source
@param to_db [String] @param from_db [String] @return void
# File lib/db_vcs/adapters/mysql.rb, line 58 def copy_database(to_db, from_db) create_opts = connection.query(<<~SQL).first SELECT `DEFAULT_CHARACTER_SET_NAME` as charset, `DEFAULT_COLLATION_NAME` as collation FROM `INFORMATION_SCHEMA`.`SCHEMATA` WHERE `SCHEMA_NAME` = '#{from_db}' LIMIT 1 SQL connection.query(<<~SQL) CREATE DATABASE #{to_db} CHARACTER SET #{create_opts["charset"]} COLLATE #{create_opts["collation"]} SQL password_opt = config.password.to_s.strip.empty? ? "" : "-p#{config.password}" command = <<~SH #{config.mysqldump_path} -u #{config.username} #{password_opt} -h #{config.host} -P #{config.port} #{from_db} \ | #{config.mysql_path} -u #{config.username} #{password_opt} -h #{config.host} -P #{config.port} #{to_db} SH `#{command}` end
create_database(db_name)
click to toggle source
@param db_name [String] @return void
# File lib/db_vcs/adapters/mysql.rb, line 78 def create_database(db_name) connection.query("CREATE DATABASE #{db_name}") end
db_exists?(db_name)
click to toggle source
@param db_name [String] @return [Boolean]
# File lib/db_vcs/adapters/mysql.rb, line 49 def db_exists?(db_name) !connection .query("SELECT 1 as one FROM `INFORMATION_SCHEMA`.`SCHEMATA` WHERE `SCHEMA_NAME` = '#{db_name}' LIMIT 1") .first.nil? end
drop_by_dbname(db_name)
click to toggle source
@param db_name [String] @return [void]
# File lib/db_vcs/adapters/mysql.rb, line 89 def drop_by_dbname(db_name) connection.query("DROP DATABASE #{db_name}") end
list_databases()
click to toggle source
@return [Array<String>]
# File lib/db_vcs/adapters/mysql.rb, line 83 def list_databases connection.query("SELECT `SCHEMA_NAME` FROM `INFORMATION_SCHEMA`.`SCHEMATA`").to_a.flat_map(&:values) end