khiav223577/atomically

View on GitHub
lib/atomically/adapter_check_service.rb

Summary

Maintainability
A
0 mins
Test Coverage
A
100%

class Atomically::AdapterCheckService
  def initialize(klass)
    @klass = klass
  end

  def pg?
    possible_pg_klasses.any?{|s| @klass.connection.is_a?(s) }
  end

  def mysql?
    possible_mysql_klasses.any?{|s| @klass.connection.is_a?(s) }
  end

  private

  def possible_pg_klasses
    @possible_pg_klasses ||= [].tap do |result|
      result << ActiveRecord::ConnectionAdapters::PostgreSQLAdapter if defined?(ActiveRecord::ConnectionAdapters::PostgreSQLAdapter)
      result << ActiveRecord::ConnectionAdapters::MakaraPostgreSQLAdapter if defined?(ActiveRecord::ConnectionAdapters::MakaraPostgreSQLAdapter)
    end
  end

  def possible_mysql_klasses
    @possible_mysql_klasses ||= [].tap do |result|
      result << ActiveRecord::ConnectionAdapters::Mysql2Adapter if defined?(ActiveRecord::ConnectionAdapters::Mysql2Adapter)
      result << ActiveRecord::ConnectionAdapters::MakaraMysql2Adapter if defined?(ActiveRecord::ConnectionAdapters::MakaraMysql2Adapter)
    end
  end
end