diff options
Diffstat (limited to 'app/graphql/resolvers/issue_status_counts_resolver.rb')
-rw-r--r-- | app/graphql/resolvers/issue_status_counts_resolver.rb | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/app/graphql/resolvers/issue_status_counts_resolver.rb b/app/graphql/resolvers/issue_status_counts_resolver.rb index db5c91daac2..92cda77d717 100644 --- a/app/graphql/resolvers/issue_status_counts_resolver.rb +++ b/app/graphql/resolvers/issue_status_counts_resolver.rb @@ -1,17 +1,29 @@ # frozen_string_literal: true module Resolvers - class IssueStatusCountsResolver < BaseResolver - prepend IssueResolverArguments - + class IssueStatusCountsResolver < Issues::BaseResolver type Types::IssueStatusCountsType, null: true + accept_release_tag - extras [:lookahead] + def resolve(**args) + return Issue.none if resource_parent.nil? + + finder = IssuesFinder.new(current_user, prepare_finder_params(args)) + finder.parent_param = resource_parent + + Gitlab::IssuablesCountForState.new(finder, resource_parent) + end + + private - def continue_issue_resolve(parent, finder, **args) - finder.parent_param = parent - apply_lookahead(Gitlab::IssuablesCountForState.new(finder, parent)) + def resource_parent + # The project could have been loaded in batch by `BatchLoader`. + # At this point we need the `id` of the project to query for issues, so + # make sure it's loaded and not `nil` before continuing. + strong_memoize(:resource_parent) do + object.respond_to?(:sync) ? object.sync : object + end end end end |