class Baza::Driver::Mysql::Databases

Public Class Methods

new(args) click to toggle source
# File lib/baza/driver/mysql/databases.rb, line 2
def initialize(args)
  @db = args.fetch(:db)
end

Public Instance Methods

[](name) click to toggle source
# File lib/baza/driver/mysql/databases.rb, line 15
def [](name)
  name = name.to_s
  list.each do |database|
    return database if database.name == name
  end

  raise Baza::Errors::DatabaseNotFound
end
create(if_not_exists: false, name:) click to toggle source
# File lib/baza/driver/mysql/databases.rb, line 6
def create(if_not_exists: false, name:)
  sql = "CREATE DATABASE"
  sql << " IF NOT EXISTS" if if_not_exists
  sql << " #{@db.quote_table(name)}"

  @db.query(sql)
  true
end
current_database() click to toggle source
# File lib/baza/driver/mysql/databases.rb, line 60
def current_database
  @db.databases[current_database_name]
end
current_database_name() click to toggle source
# File lib/baza/driver/mysql/databases.rb, line 56
def current_database_name
  @db.query("SELECT DATABASE()").fetch.values.first
end
list() click to toggle source
# File lib/baza/driver/mysql/databases.rb, line 24
def list
  ArrayEnumerator.new do |yielder|
    @db.query("SHOW DATABASES") do |data|
      yielder << Baza::Driver::Mysql::Database.new(
        name: data.fetch(:Database),
        driver: self,
        db: @db
      )
    end
  end
end
with_database(name) { || ... } click to toggle source
# File lib/baza/driver/mysql/databases.rb, line 36
def with_database(name)
  if @db.opts[:db].to_s == name.to_s
    yield if block_given?
    return self
  end

  previous_db_name = @db.current_database_name
  @db.query("USE #{@db.quote_database(name)}")

  if block_given?
    begin
      yield
    ensure
      @db.query("USE #{@db.quote_database(previous_db_name)}")
    end
  end

  self
end