Forráskód Böngészése

Added preview statement to adapters

Andrew Kane 8 éve
szülő
commit
a4877c17bd

+ 3 - 1
app/views/blazer/queries/_form.html.erb

@@ -126,6 +126,7 @@
   var error_line = null;
   var xhr;
   var params = <%= raw blazer_json_escape(variable_params.to_json) %>;
+  var previewStatement = <%= raw blazer_json_escape(Hash[Blazer.data_sources.map { |k, v| [k, v.preview_statement] }].to_json) %>;
 
   $("#run").click(function (e) {
     e.preventDefault();
@@ -162,7 +163,8 @@
   $(document).on("change", "#table_names", function () {
     var val = $(this).val();
     if (val.length > 0) {
-      editor.setValue("SELECT * FROM " + val + " LIMIT 10");
+      var dataSource = $("#query_data_source").val();
+      editor.setValue(previewStatement[dataSource].replace("{table}", val));
       $("#run").click();
     }
   });

+ 4 - 0
lib/blazer/adapters/base_adapter.rb

@@ -15,6 +15,10 @@ module Blazer
         [] # optional, but nice to have
       end
 
+      def preview_statement
+        "" # also optional, but nice to have
+      end
+
       def reconnect
         # optional
       end

+ 4 - 0
lib/blazer/adapters/elasticsearch_adapter.rb

@@ -28,6 +28,10 @@ module Blazer
         client.indices.get_aliases.map { |k, v| [k, v["aliases"].keys] }.flatten.uniq.sort
       end
 
+      def preview_statement
+        '{"query": {"match_all": {}}, "size": 10}'
+      end
+
       protected
 
       def client

+ 4 - 0
lib/blazer/adapters/mongodb_adapter.rb

@@ -21,6 +21,10 @@ module Blazer
         db.collection_names
       end
 
+      def preview_statement
+        "db.{table}.find().limit(10)"
+      end
+
       protected
 
       def client

+ 4 - 0
lib/blazer/adapters/sql_adapter.rb

@@ -44,6 +44,10 @@ module Blazer
         result.rows.map(&:first)
       end
 
+      def preview_statement
+        "SELECT * FROM {table} LIMIT 10"
+      end
+
       def reconnect
         connection_model.establish_connection(settings["url"])
       end

+ 1 - 1
lib/blazer/data_source.rb

@@ -6,7 +6,7 @@ module Blazer
 
     attr_reader :id, :settings, :adapter, :adapter_instance
 
-    def_delegators :adapter_instance, :schema, :tables, :reconnect, :cost, :explain
+    def_delegators :adapter_instance, :schema, :tables, :preview_statement, :reconnect, :cost, :explain
 
     def initialize(id, settings)
       @id = id