Browse Source

Added transform_statement option to replace groupdate_hack

Andrew Kane 9 năm trước cách đây
mục cha
commit
eca5b7c814
3 tập tin đã thay đổi với 3 bổ sung16 xóa
  1. 2 2
      app/controllers/blazer/queries_controller.rb
  2. 1 0
      lib/blazer.rb
  3. 0 14
      lib/blazer/data_source.rb

+ 2 - 2
app/controllers/blazer/queries_controller.rb

@@ -42,7 +42,7 @@ module Blazer
         end
       end
 
-      data_source.groupdate_hack(@statement)
+      Blazer.transform_statement.call(data_source, @statement) if Blazer.transform_statement
     end
 
     def edit
@@ -59,7 +59,7 @@ module Blazer
         data_source = params[:data_source]
         data_source = @query.data_source if @query && @query.data_source
         @data_source = Blazer.data_sources[data_source]
-        @data_source.groupdate_hack(@statement)
+        Blazer.transform_statement.call(@data_source, @statement) if Blazer.transform_statement
 
         # audit
         if Blazer.audit

+ 1 - 0
lib/blazer.rb

@@ -14,6 +14,7 @@ module Blazer
     attr_accessor :user_method
     attr_accessor :from_email
     attr_accessor :cache
+    attr_accessor :transform_statement
   end
   self.audit = true
   self.user_name = :name

+ 0 - 14
lib/blazer/data_source.rb

@@ -117,20 +117,6 @@ module Blazer
       connection_model.connection.adapter_name == "Redshift"
     end
 
-    def groupdate_hack(statement)
-      if redshift? && Blazer.settings["groupdate_hack"]
-        original_statement = statement.dup
-        %w[day week month].each do |period|
-          statement.gsub!(/g#{period}\(([^,\)]+), ?([^\)]+)\)/, "TRUNC(DATE_TRUNC('#{period}', CONVERT_TIMEZONE(\\2, \\1)))")
-          statement.gsub!(/g#{period}\(([^\)]*_at[^\)]*)\)/, "TRUNC(DATE_TRUNC('#{period}', CONVERT_TIMEZONE('America/Los_Angeles', \\1)))")
-          statement.gsub!(/g#{period}\(([^\)]+)\)/, "TRUNC(DATE_TRUNC('#{period}', \\1))")
-        end
-        if statement != original_statement
-          statement << "\n/* modified for Redshift */"
-        end
-      end
-    end
-
     protected
 
     def in_transaction