| 
					
				 | 
			
			
				@@ -4,24 +4,13 @@ module Blazer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   class DataSource 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     extend Forwardable 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    attr_reader :id, :settings, :adapter, :adapter_instance 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    attr_reader :id, :settings 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def_delegators :adapter_instance, :schema, :tables, :preview_statement, :reconnect, :cost, :explain, :cancel 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def initialize(id, settings) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       @id = id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       @settings = settings 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      unless settings["url"] || Rails.env.development? || ["bigquery", "athena"].include?(settings["adapter"]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        raise Blazer::Error, "Empty url for data source: #{id}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      @adapter_instance = 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        if Blazer.adapters[adapter] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          Blazer.adapters[adapter].new(self) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        else 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-          raise Blazer::Error, "Unknown adapter" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def adapter 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -154,9 +143,23 @@ module Blazer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     protected 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def adapter_instance 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      @adapter_instance ||= begin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        unless settings["url"] || Rails.env.development? || ["bigquery", "athena"].include?(settings["adapter"]) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          raise Blazer::Error, "Empty url for data source: #{id}" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        unless Blazer.adapters[adapter] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          raise Blazer::Error, "Unknown adapter" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        Blazer.adapters[adapter].new(self) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     def run_statement_helper(statement, comment, run_id) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       start_time = Time.now 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      columns, rows, error = @adapter_instance.run_statement(statement, comment) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      columns, rows, error = adapter_instance.run_statement(statement, comment) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       duration = Time.now - start_time 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       cache_data = nil 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -165,7 +168,7 @@ module Blazer 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         cache_data = Marshal.dump([columns, rows, error, cache ? Time.now : nil]) rescue nil 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      if cache && cache_data && @adapter_instance.cachable?(statement) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      if cache && cache_data && adapter_instance.cachable?(statement) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Blazer.cache.write(statement_cache_key(statement), cache_data, expires_in: cache_expires_in.to_f * 60) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       end 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |