diff --git a/app/controllers/projects/pipelines_controller.rb b/app/controllers/projects/pipelines_controller.rb index 43a1abaa662f757cd949050035b182b47151dba7..f8aba16203e8ccd649e2ac760a6c44472ec36614 100644 --- a/app/controllers/projects/pipelines_controller.rb +++ b/app/controllers/projects/pipelines_controller.rb @@ -1,3 +1,35 @@ +module ActiveRecord + class QueryRecorder + attr_reader :log + attr_reader :start + attr_reader :end + + def initialize(&block) + @log = [] + @start = Time.now + ActiveSupport::Notifications.subscribed(method(:callback), 'sql.active_record', &block) + @end = Time.now + end + + def callback(name, start, finish, message_id, values) + return if %w(SCHEMA).include?(values[:name]) + @log << values[:sql] + end + + def time + @end - @start + end + + def count + @log.count + end + + def log_message + @log.join("\n\n") + end + end +end + class Projects::PipelinesController < Projects::ApplicationController before_action :pipeline, except: [:index, :new, :create, :charts] before_action :commit, only: [:show, :builds] @@ -29,18 +61,15 @@ class Projects::PipelinesController < Projects::ApplicationController respond_to do |format| format.html format.json do - render json: { - pipelines: PipelineSerializer + result = nil + queries = ActiveRecord::QueryRecorder.new do + result = PipelineSerializer .new(project: @project, user: @current_user) .with_pagination(request, response) - .represent(@pipelines), - count: { - all: @pipelines_count, - running: @running_count, - pending: @pending_count, - finished: @finished_count, - } - } + .represent(@pipelines) + end + + render json: { aa_queries: queries.count, aa_time: queries.time, result: result } end end end