Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancisco Lopez <fjlopez@gitlab.com>2017-11-30 14:52:38 +0300
committerFrancisco Lopez <fjlopez@gitlab.com>2017-12-01 20:32:12 +0300
commit194f7bca9a286942bcd764c836180964e33a1e92 (patch)
treedd1612a1188dcc0fc9436d2c19de8227b661cc07 /app/services
parent58c5b463ff75618a557d067c16f49ef581cda85c (diff)
Comments from code review applied. Also switched forked_from_project and ForkedProjectLinks to ForkNetworkMember
Diffstat (limited to 'app/services')
-rw-r--r--app/services/projects/batch_count_service.rb21
-rw-r--r--app/services/projects/batch_forks_count_service.rb8
-rw-r--r--app/services/projects/batch_open_issues_count_service.rb7
-rw-r--r--app/services/projects/count_service.rb2
-rw-r--r--app/services/projects/forks_count_service.rb6
-rw-r--r--app/services/projects/open_issues_count_service.rb10
6 files changed, 26 insertions, 28 deletions
diff --git a/app/services/projects/batch_count_service.rb b/app/services/projects/batch_count_service.rb
index b8a030e7bc5..a79fdb62d69 100644
--- a/app/services/projects/batch_count_service.rb
+++ b/app/services/projects/batch_count_service.rb
@@ -4,28 +4,19 @@ module Projects
@projects = projects
end
- def count
- @projects.map do |project|
- [project.id, current_count_service(project).count]
- end.to_h
- end
-
def refresh_cache
@projects.each do |project|
- unless current_count_service(project).count_stored?
- current_count_service(project).refresh_cache { global_count[project.id].to_i }
+ service = count_service.new(project)
+ unless service.count_stored?
+ service.refresh_cache { global_count[project.id].to_i }
end
end
end
- def current_count_service(project)
- if defined? @service
- @service.project = project
- else
- @service = count_service.new(project)
- end
+ def project_ids
+ return @projects if @projects.is_a?(ActiveRecord::Relation)
- @service
+ @projects.map(&:id)
end
def global_count(project)
diff --git a/app/services/projects/batch_forks_count_service.rb b/app/services/projects/batch_forks_count_service.rb
index 51fad1c12a4..b9ed0b3cf4f 100644
--- a/app/services/projects/batch_forks_count_service.rb
+++ b/app/services/projects/batch_forks_count_service.rb
@@ -2,9 +2,11 @@ module Projects
# Service class for getting and caching the number of forks of several projects
class BatchForksCountService < Projects::BatchCountService
def global_count
- @global_count ||= ForkedProjectLink.where(forked_from_project: @projects.map(&:id))
- .group(:forked_from_project_id)
- .count
+ @global_count ||= begin
+ count_service.query(project_ids)
+ .group(:forked_from_project_id)
+ .count
+ end
end
def count_service
diff --git a/app/services/projects/batch_open_issues_count_service.rb b/app/services/projects/batch_open_issues_count_service.rb
index a0d9120487c..5087684863b 100644
--- a/app/services/projects/batch_open_issues_count_service.rb
+++ b/app/services/projects/batch_open_issues_count_service.rb
@@ -2,10 +2,9 @@ module Projects
# Service class for getting and caching the number of forks of several projects
class BatchOpenIssuesCountService < Projects::BatchCountService
def global_count
- @global_count ||= Issue.opened.public_only
- .where(project: @projects.map(&:id))
- .group(:project_id)
- .count
+ @global_count ||= begin
+ count_service.query(project_ids).group(:project_id).count
+ end
end
def count_service
diff --git a/app/services/projects/count_service.rb b/app/services/projects/count_service.rb
index a3ec52232dd..7e575b2d6f3 100644
--- a/app/services/projects/count_service.rb
+++ b/app/services/projects/count_service.rb
@@ -7,8 +7,6 @@ module Projects
# all caches.
VERSION = 1
- attr_accessor :project
-
def initialize(project)
@project = project
end
diff --git a/app/services/projects/forks_count_service.rb b/app/services/projects/forks_count_service.rb
index d9bdf3a8ad7..d67ae78b268 100644
--- a/app/services/projects/forks_count_service.rb
+++ b/app/services/projects/forks_count_service.rb
@@ -2,11 +2,15 @@ module Projects
# Service class for getting and caching the number of forks of a project.
class ForksCountService < Projects::CountService
def relation_for_count
- @project.forks
+ self.class.query(@project.id)
end
def cache_key_name
'forks_count'
end
+
+ def self.query(project_ids)
+ ForkNetworkMember.where(forked_from_project: project_ids)
+ end
end
end
diff --git a/app/services/projects/open_issues_count_service.rb b/app/services/projects/open_issues_count_service.rb
index 25de97325e2..ab1c477936a 100644
--- a/app/services/projects/open_issues_count_service.rb
+++ b/app/services/projects/open_issues_count_service.rb
@@ -3,13 +3,17 @@ module Projects
# project.
class OpenIssuesCountService < Projects::CountService
def relation_for_count
- # We don't include confidential issues in this number since this would
- # expose the number of confidential issues to non project members.
- @project.issues.opened.public_only
+ self.class.query(@project.id)
end
def cache_key_name
'open_issues_count'
end
+
+ def self.query(project_ids)
+ # We don't include confidential issues in this number since this would
+ # expose the number of confidential issues to non project members.
+ Issue.opened.public_only.where(project: project_ids)
+ end
end
end