summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-06-24 10:38:50 +0300
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2014-06-24 10:38:50 +0300
commit094e5efb4cda16bd790a25cb9c09dc1c0f896757 (patch)
tree85077284e3c7e286c95759ce6f3cf097fc2c5786
parentaadef92f1d494e7d59e4238132c7b1a9c8986a84 (diff)
parent20b2102771c5657874b557a867aadbe4c6772892 (diff)
downloadgitlab-ce-094e5efb4cda16bd790a25cb9c09dc1c0f896757.tar.gz
Merge pull request #6992 from skv-headless/project_commits_sql_optimization
notes count in 1 query for mr and commits
-rw-r--r--app/controllers/projects/commits_controller.rb2
-rw-r--r--app/controllers/projects/merge_requests_controller.rb5
-rw-r--r--app/views/projects/commits/_commit.html.haml12
3 files changed, 15 insertions, 4 deletions
diff --git a/app/controllers/projects/commits_controller.rb b/app/controllers/projects/commits_controller.rb
index 12856191c26..038645aa497 100644
--- a/app/controllers/projects/commits_controller.rb
+++ b/app/controllers/projects/commits_controller.rb
@@ -13,6 +13,8 @@ class Projects::CommitsController < Projects::ApplicationController
@limit, @offset = (params[:limit] || 40), (params[:offset] || 0)
@commits = @repo.commits(@ref, @path, @limit, @offset)
+ @note_counts = Note.where(commit_id: @commits.map(&:id)).
+ group(:commit_id).count
respond_to do |format|
format.html # index.html.erb
diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb
index 1abedc1f272..89f4ab01a3f 100644
--- a/app/controllers/projects/merge_requests_controller.rb
+++ b/app/controllers/projects/merge_requests_controller.rb
@@ -32,6 +32,8 @@ class Projects::MergeRequestsController < Projects::ApplicationController
end
def show
+ @note_counts = Note.where(commit_id: @merge_request.commits.map(&:id)).
+ group(:commit_id).count
respond_to do |format|
format.html
format.diff { render text: @merge_request.to_diff(current_user) }
@@ -86,6 +88,9 @@ class Projects::MergeRequestsController < Projects::ApplicationController
@compare_failed = true
end
+ @note_counts = Note.where(commit_id: @commits.map(&:id)).
+ group(:commit_id).count
+
@diffs = compare_action.diffs
@merge_request.title = @merge_request.source_branch.titleize.humanize
@target_project = @merge_request.target_project
diff --git a/app/views/projects/commits/_commit.html.haml b/app/views/projects/commits/_commit.html.haml
index a0606662807..74146b5f196 100644
--- a/app/views/projects/commits/_commit.html.haml
+++ b/app/views/projects/commits/_commit.html.haml
@@ -9,11 +9,15 @@
= link_to "Browse Code ยป", project_tree_path(project, commit), class: "pull-right"
.notes_count
- - notes = project.notes.for_commit_id(commit.id)
- - if notes.any?
+ - if @note_counts
+ - note_count = @note_counts.fetch(commit.id, 0)
+ - else
+ - notes = project.notes.for_commit_id(commit.id)
+ - note_count = notes.count
+
+ - if note_count > 0
%span.label.label-gray
- %i.icon-comment
- = notes.count
+ %i.icon-comment= note_count
- if commit.description?
.commit-row-description.js-toggle-content