diff options
Diffstat (limited to 'app/graphql/resolvers/issues_resolver.rb')
-rw-r--r-- | app/graphql/resolvers/issues_resolver.rb | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/app/graphql/resolvers/issues_resolver.rb b/app/graphql/resolvers/issues_resolver.rb index 4b52ef61d57..e3102a7d32a 100644 --- a/app/graphql/resolvers/issues_resolver.rb +++ b/app/graphql/resolvers/issues_resolver.rb @@ -1,8 +1,31 @@ # frozen_string_literal: true -# rubocop:disable Graphql/ResolverType (inherited from BaseIssuesResolver) module Resolvers - class IssuesResolver < BaseIssuesResolver - accept_release_tag + class IssuesResolver < Issues::BaseResolver + prepend ::Issues::LookAheadPreloads + include ::Issues::SortArguments + + argument :state, Types::IssuableStateEnum, + required: false, + description: 'Current state of this issue.' + + # see app/graphql/types/issue_connection.rb + type 'Types::IssueConnection', null: true + + def resolve_with_lookahead(**args) + return unless Feature.enabled?(:root_level_issues_query) + + issues = apply_lookahead( + IssuesFinder.new(current_user, prepare_finder_params(args)).execute + ) + + if non_stable_cursor_sort?(args[:sort]) + # Certain complex sorts are not supported by the stable cursor pagination yet. + # In these cases, we use offset pagination, so we return the correct connection. + offset_pagination(issues) + else + issues + end + end end end |