class DbVcs::Manager

Constants

ADAPTERS

Attributes

adapter[R]
adapter_name[R]

Public Class Methods

copy_for_all_envs(target:, source: DbVcs.config.main_branch) click to toggle source

Creates databases for target branch from source branch for all setup environments for all setup databases @param :target [String] target branch name @param :source [String] a branch name to copy the db from @return [void]

# File lib/db_vcs/manager.rb, line 23
def copy_for_all_envs(target:, source: DbVcs.config.main_branch)
  DbVcs.config.dbs_in_use.each do |adapter_name|
    inst = new(adapter_name)
    DbVcs.config.environments.each do |env|
      inst.copy(target: DbVcs::Utils.db_name(env, target), source: DbVcs::Utils.db_name(env, source))
    end
  end
end
drop_for_all_envs(branch_name) click to toggle source

Drops databases of given branch name for all environments for all setup databases @param branch_name [String]

# File lib/db_vcs/manager.rb, line 34
def drop_for_all_envs(branch_name)
  DbVcs.config.dbs_in_use.each do |adapter_name|
    inst = new(adapter_name)
    DbVcs.config.environments.each do |env|
      inst.drop(DbVcs::Utils.db_name(env, branch_name))
    end
  end
end
get_adapter_by_name(adapter_name) click to toggle source

@param adapter_name [String] @return [Class<DbVcs::Adapters::Postgres>, Class<DbVcs::Adapters::Mongo>] @raise [NotImplementedError] in case if no adapter is found

# File lib/db_vcs/manager.rb, line 15
def get_adapter_by_name(adapter_name)
  ADAPTERS[adapter_name] || raise(NotImplementedError, "No adapter for `#{adapter_name}' is implemented.")
end
new(adapter_name) click to toggle source

@param adapter_name [String]

# File lib/db_vcs/manager.rb, line 47
def initialize(adapter_name)
  @adapter_name = adapter_name
  @adapter = self.class.get_adapter_by_name(adapter_name)
end

Public Instance Methods

copy(target:, source:) click to toggle source

@param :target [String] new database name @param :source [String] database name to create a new db from @return [void]

# File lib/db_vcs/manager.rb, line 55
def copy(target:, source:)
  unless adapter.db_exists?(source)
    return failure "#{source}' doesn't exist"
  end
  if adapter.db_exists?(target)
    return failure "#{target} already exists"
  end
  success "Copying #{source} -> #{target}"
  adapter.copy_database(target, source)
end
create(db_name) click to toggle source

@param db_name [String] @return [void]

# File lib/db_vcs/manager.rb, line 78
def create(db_name)
  if adapter.db_exists?(db_name)
    return failure "#{db_name}' already exist"
  end
  adapter.create_database(db_name)
  success "Database #{db_name} created successfully"
end
drop(db_name) click to toggle source

@param db_name [String] @return [void]

# File lib/db_vcs/manager.rb, line 68
def drop(db_name)
  unless adapter.db_exists?(db_name)
    return failure "#{db_name}' doesn't exist"
  end
  adapter.drop_by_dbname(db_name)
  success "Database #{db_name} was dropped successfully"
end
failure(text) click to toggle source

@param text [String, nil] @return void

# File lib/db_vcs/manager.rb, line 100
def failure(text)
  puts "\e[1m\e[31m#{message(text)}\e[0m\e[0m"
end
message(text) click to toggle source

@param text [String, nil] @return void

# File lib/db_vcs/manager.rb, line 88
def message(text)
  "#{adapter_name.capitalize} :: #{text}"
end
regular(text) click to toggle source

@param text [String, nil] @return void

# File lib/db_vcs/manager.rb, line 106
def regular(text)
  puts message(text)
end
success(text) click to toggle source

@param text [String, nil] @return void

# File lib/db_vcs/manager.rb, line 94
def success(text)
  puts "\e[1m\e[32m#{message(text)}\e[0m\e[0m"
end