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:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-03-04 21:20:01 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2022-03-04 21:20:01 +0300
commit698fe342b9fff4e569aa0f14a1973271144ff1a5 (patch)
tree102aa942c5903ecf7543bc9d087c0c7e3eaa6510 /app/services/boards
parent73e15fde38825a490903ef88933d8896585f3008 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/services/boards')
-rw-r--r--app/services/boards/base_items_list_service.rb27
1 files changed, 19 insertions, 8 deletions
diff --git a/app/services/boards/base_items_list_service.rb b/app/services/boards/base_items_list_service.rb
index a3e24844587..01fad14d036 100644
--- a/app/services/boards/base_items_list_service.rb
+++ b/app/services/boards/base_items_list_service.rb
@@ -12,21 +12,32 @@ module Boards
end
# rubocop: disable CodeReuse/ActiveRecord
- def metadata
- issuables = item_model.arel_table
- keys = metadata_fields.keys
+ def metadata(required_fields = [:issue_count, :total_issue_weight])
+ fields = metadata_fields(required_fields)
+ keys = fields.keys
# TODO: eliminate need for SQL literal fragment
- columns = Arel.sql(metadata_fields.values_at(*keys).join(', '))
- results = item_model.where(id: init_collection.select(issuables[:id])).pluck(columns)
+ columns = Arel.sql(fields.values_at(*keys).join(', '))
+ results = item_model.where(id: collection_ids)
+ results = query_additions(results, required_fields)
+ results = results.select(columns)
- Hash[keys.zip(results.flatten)]
+ Hash[keys.zip(results.pluck(columns).flatten)]
end
# rubocop: enable CodeReuse/ActiveRecord
private
- def metadata_fields
- { size: 'COUNT(*)' }
+ # override if needed
+ def query_additions(items, required_fields)
+ items
+ end
+
+ def collection_ids
+ @collection_ids ||= init_collection.select(item_model.arel_table[:id])
+ end
+
+ def metadata_fields(required_fields)
+ required_fields&.include?(:issue_count) ? { size: 'COUNT(*)' } : {}
end
def order(items)