class DbVcs::Adapters::Mongo

Public Class Methods

config() click to toggle source

@return [DbVcs::Adapters::Mongo::Config]

# File lib/db_vcs/adapters/mongo.rb, line 28
def config
  DbVcs.config.mongo_config
end
connection() click to toggle source

@return [Mongo::Client]

# File lib/db_vcs/adapters/mongo.rb, line 33
def connection
  @connection ||=
    begin
      require "mongo"
      ::Mongo::Client.new(config.mongo_uri)
    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/mongo.rb, line 50
        def copy_database(to_db, from_db)
          command =
            <<~SH
            #{config.mongodump_path} #{config.mongo_uri} --db="#{from_db}" --archive --quiet \
            | #{config.mongorestore_path} #{config.mongo_uri} --archive --quiet --nsFrom='#{from_db}.*' --nsTo='#{to_db}.*'
          SH
          `#{command}`
        end
create_database(db_name) click to toggle source

@param db_name [String] @return void

# File lib/db_vcs/adapters/mongo.rb, line 61
def create_database(db_name)
  # Mongodb databases should contain at least one collection
  connection.use(db_name).database.collection("_db_vcs").insert_one(_db_vcs: 1)
end
db_exists?(db_name) click to toggle source

@param db_name [String] @return [Boolean]

# File lib/db_vcs/adapters/mongo.rb, line 43
def db_exists?(db_name)
  list_databases.include?(db_name)
end
drop_by_dbname(db_name) click to toggle source

@param db_name [String] @return [void]

# File lib/db_vcs/adapters/mongo.rb, line 73
def drop_by_dbname(db_name)
  connection.use(db_name).database.drop
end
list_databases() click to toggle source

@return [Array<String>]

# File lib/db_vcs/adapters/mongo.rb, line 67
def list_databases
  connection.database_names
end