Browse Source

Added support for custom adapters

Andrew Kane 7 years ago
parent
commit
8691c7bc10
3 changed files with 16 additions and 9 deletions
  1. 1 0
      CHANGELOG.md
  2. 13 0
      lib/blazer.rb
  3. 2 9
      lib/blazer/data_source.rb

+ 1 - 0
CHANGELOG.md

@@ -1,5 +1,6 @@
 ## 1.7.8 [unreleased]
 
+- Added support for custom adapters
 - Fixed bug with scatter charts on dashboards
 - Fixed table preview for SQL Server
 - Fixed issue when `default_url_options` set

+ 13 - 0
lib/blazer.rb

@@ -148,4 +148,17 @@ module Blazer
       end
     end
   end
+
+  def self.adapters
+    @adapters ||= {}
+  end
+
+  def self.register_adapter(name, adapter)
+    adapters[name] = adapter
+  end
 end
+
+Blazer.register_adapter "elasticsearch", Blazer::Adapters::ElasticsearchAdapter
+Blazer.register_adapter "mongodb", Blazer::Adapters::MongodbAdapter
+Blazer.register_adapter "presto", Blazer::Adapters::PrestoAdapter
+Blazer.register_adapter "sql", Blazer::Adapters::SqlAdapter

+ 2 - 9
lib/blazer/data_source.rb

@@ -17,15 +17,8 @@ module Blazer
       end
 
       @adapter_instance =
-        case adapter
-        when "elasticsearch"
-          Blazer::Adapters::ElasticsearchAdapter.new(self)
-        when "mongodb"
-          Blazer::Adapters::MongodbAdapter.new(self)
-        when "presto"
-          Blazer::Adapters::PrestoAdapter.new(self)
-        when "sql"
-          Blazer::Adapters::SqlAdapter.new(self)
+        if Blazer.adapters[adapter]
+          Blazer.adapters[adapter].new(self)
         else
           raise Blazer::Error, "Unknown adapter"
         end