Class: QuickCount::Adapters::Factory

Inherits:
Object
  • Object
show all
Defined in:
lib/quick_count/adapters/factory.rb

Constant Summary collapse

ADAPTERS =
[Postgresql, Mysql].freeze

Class Method Summary collapse

Class Method Details

.create(connection:) ⇒ Object



9
10
11
12
13
14
15
16
17
# File 'lib/quick_count/adapters/factory.rb', line 9

def self.create(connection:)
  adapter_class = detect_adapter(connection)

  unless adapter_class
    raise UnsupportedDatabaseError, "Unsupported database: #{connection.adapter_name}"
  end

  adapter_class.new(connection: connection)
end

.detect_adapter(connection) ⇒ Object



19
20
21
# File 'lib/quick_count/adapters/factory.rb', line 19

def self.detect_adapter(connection)
  ADAPTERS.find { |adapter_class| adapter_class.new(connection: connection).supported? }
end

.supported_databasesObject



23
24
25
26
27
# File 'lib/quick_count/adapters/factory.rb', line 23

def self.supported_databases
  ADAPTERS.map do |adapter_class|
    adapter_class.name.split('::').last.downcase
  end
end