diff options
Diffstat (limited to 'app/graphql/types/merge_request_type.rb')
-rw-r--r-- | app/graphql/types/merge_request_type.rb | 30 |
1 files changed, 20 insertions, 10 deletions
diff --git a/app/graphql/types/merge_request_type.rb b/app/graphql/types/merge_request_type.rb index 56c88491684..372aeac055b 100644 --- a/app/graphql/types/merge_request_type.rb +++ b/app/graphql/types/merge_request_type.rb @@ -152,6 +152,25 @@ module Types field :auto_merge_enabled, GraphQL::BOOLEAN_TYPE, null: false, description: 'Indicates if auto merge is enabled for the merge request' + field :approved_by, Types::UserType.connection_type, null: true, + description: 'Users who approved the merge request' + + def approved_by + object.approved_by_users + end + + # rubocop: disable CodeReuse/ActiveRecord + def user_notes_count + BatchLoader::GraphQL.for(object.id).batch(key: :merge_request_user_notes_count) do |ids, loader, args| + counts = Note.where(noteable_type: 'MergeRequest', noteable_id: ids).user.group(:noteable_id).count + + ids.each do |id| + loader.call(id, counts[id] || 0) + end + end + end + # rubocop: enable CodeReuse/ActiveRecord + def diff_stats(path: nil) stats = Array.wrap(object.diff_stats&.to_a) @@ -163,21 +182,12 @@ module Types end def diff_stats_summary - nil_stats = { additions: 0, deletions: 0, file_count: 0 } - return nil_stats unless object.diff_stats.present? - - object.diff_stats.each_with_object(nil_stats) do |status, hash| - hash.merge!(additions: status.additions, deletions: status.deletions, file_count: 1) { |_, x, y| x + y } - end + BatchLoaders::MergeRequestDiffSummaryBatchLoader.load_for(object) end def commit_count object&.metrics&.commits_count end - - def approvers - object.approver_users - end end end Types::MergeRequestType.prepend_if_ee('::EE::Types::MergeRequestType') |