summaryrefslogtreecommitdiff
path: root/lib/api/projects_relation_builder.rb
diff options
context:
space:
mode:
authorFilipa Lacerda <filipa@gitlab.com>2017-12-05 10:22:07 +0000
committerFilipa Lacerda <filipa@gitlab.com>2017-12-05 10:22:07 +0000
commitc1390bd98ccb0368f700117097f47d6ff488fdba (patch)
treec4f383b778c8a3d33bdbb82d84c8fd7a91d3fbdf /lib/api/projects_relation_builder.rb
parente416d6ff1d020ec510ab71bfdbcfbc72b14cd44a (diff)
parent4ca4b0ff702a68a9aed5da70d9170da410eefafa (diff)
downloadgitlab-ce-38869-templates.tar.gz
Merge branch 'master' into 38869-templates38869-templates
* master: (50 commits) remove ambiguity about which resource type to be using for new sessions Backport changes from refactor sidebar weight block Vue and move to Issue Boards Migrate Gitlab::Git::Repository#cherry_pick to Gitaly show status of issue links in wiki page issue note component rename Prevent job link form rendering when user does not have permissions Move SingleRepositoryWorker#fsck into Gitlab::Git::Repository Import axios utils in commons Update parser gem to remove warning about wrong ruby version Merge branch 'master-i18n' into 'master' Reduce pipeline chain life span to minimize side effects Add CHANGELOG entry Refactor GCP Client#user_agent_header to use #tap Remove seed file from the development env Fixed bug Fix watch level for mentions in description Add notice to gollum initializer Add underline hover state to all links Moving query to base count service Added default order to UserFinder ...
Diffstat (limited to 'lib/api/projects_relation_builder.rb')
-rw-r--r--lib/api/projects_relation_builder.rb34
1 files changed, 34 insertions, 0 deletions
diff --git a/lib/api/projects_relation_builder.rb b/lib/api/projects_relation_builder.rb
new file mode 100644
index 00000000000..6482fd94ab8
--- /dev/null
+++ b/lib/api/projects_relation_builder.rb
@@ -0,0 +1,34 @@
+module API
+ module ProjectsRelationBuilder
+ extend ActiveSupport::Concern
+
+ module ClassMethods
+ def prepare_relation(projects_relation, options = {})
+ projects_relation = preload_relation(projects_relation, options)
+ execute_batch_counting(projects_relation)
+ projects_relation
+ end
+
+ def preload_relation(projects_relation, options = {})
+ projects_relation
+ end
+
+ def forks_counting_projects(projects_relation)
+ projects_relation
+ end
+
+ def batch_forks_counting(projects_relation)
+ ::Projects::BatchForksCountService.new(forks_counting_projects(projects_relation)).refresh_cache
+ end
+
+ def batch_open_issues_counting(projects_relation)
+ ::Projects::BatchOpenIssuesCountService.new(projects_relation).refresh_cache
+ end
+
+ def execute_batch_counting(projects_relation)
+ batch_forks_counting(projects_relation)
+ batch_open_issues_counting(projects_relation)
+ end
+ end
+ end
+end