| 
														
															@@ -1,6 +1,7 @@ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 module Blazer 
														 | 
														
														 | 
														
															 module Blazer 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   class QueriesController < BaseController 
														 | 
														
														 | 
														
															   class QueriesController < BaseController 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     before_action :set_query, only: [:show, :edit, :update, :destroy, :refresh] 
														 | 
														
														 | 
														
															     before_action :set_query, only: [:show, :edit, :update, :destroy, :refresh] 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    before_action :set_data_source, only: [:tables, :schema, :cancel] 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     def home 
														 | 
														
														 | 
														
															     def home 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       if params[:filter] == "dashboards" 
														 | 
														
														 | 
														
															       if params[:filter] == "dashboards" 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -83,7 +84,10 @@ module Blazer 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       data_source = @query.data_source if @query && @query.data_source 
														 | 
														
														 | 
														
															       data_source = @query.data_source if @query && @query.data_source 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       @data_source = Blazer.data_sources[data_source] 
														 | 
														
														 | 
														
															       @data_source = Blazer.data_sources[data_source] 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-      if @run_id 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      # ensure viewable 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      if !(@query || Query.new(data_source: @data_source.id)).viewable?(blazer_user) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        render_forbidden 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      elsif @run_id 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         @timestamp = blazer_params[:timestamp].to_i 
														 | 
														
														 | 
														
															         @timestamp = blazer_params[:timestamp].to_i 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															         @result = @data_source.run_results(@run_id) 
														 | 
														
														 | 
														
															         @result = @data_source.run_results(@run_id) 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -174,20 +178,28 @@ module Blazer 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     end 
														 | 
														
														 | 
														
															     end 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     def tables 
														 | 
														
														 | 
														
															     def tables 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-      render json: Blazer.data_sources[params[:data_source]].tables 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      render json: @data_source.tables 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     end 
														 | 
														
														 | 
														
															     end 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     def schema 
														 | 
														
														 | 
														
															     def schema 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-      @schema = Blazer.data_sources[params[:data_source]].schema 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      @schema = @data_source.schema 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     end 
														 | 
														
														 | 
														
															     end 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     def cancel 
														 | 
														
														 | 
														
															     def cancel 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-      Blazer.data_sources[params[:data_source]].cancel(blazer_run_id) 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      @data_source.cancel(blazer_run_id) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       head :ok 
														 | 
														
														 | 
														
															       head :ok 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     end 
														 | 
														
														 | 
														
															     end 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     private 
														 | 
														
														 | 
														
															     private 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      def set_data_source 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        @data_source = Blazer.data_sources[params[:data_source]] 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        unless Query.new(data_source: @data_source.id).editable?(blazer_user) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+          render_forbidden 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        end 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      end 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       def continue_run 
														 | 
														
														 | 
														
															       def continue_run 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         render json: {run_id: @run_id, timestamp: @timestamp}, status: :accepted 
														 | 
														
														 | 
														
															         render json: {run_id: @run_id, timestamp: @timestamp}, status: :accepted 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       end 
														 | 
														
														 | 
														
															       end 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -286,6 +298,14 @@ module Blazer 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															       def set_query 
														 | 
														
														 | 
														
															       def set_query 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         @query = Blazer::Query.find(params[:id].to_s.split("-").first) 
														 | 
														
														 | 
														
															         @query = Blazer::Query.find(params[:id].to_s.split("-").first) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        unless @query.viewable?(blazer_user) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+          render_forbidden 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        end 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      end 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      def render_forbidden 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        render plain: "Access denied", status: :forbidden 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       end 
														 | 
														
														 | 
														
															       end 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															       def query_params 
														 | 
														
														 | 
														
															       def query_params 
														 |