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:
Diffstat (limited to 'app/graphql/resolvers/milestones_resolver.rb')
-rw-r--r--app/graphql/resolvers/milestones_resolver.rb20
1 files changed, 19 insertions, 1 deletions
diff --git a/app/graphql/resolvers/milestones_resolver.rb b/app/graphql/resolvers/milestones_resolver.rb
index 1241b41501d..4fa4c939a23 100644
--- a/app/graphql/resolvers/milestones_resolver.rb
+++ b/app/graphql/resolvers/milestones_resolver.rb
@@ -25,14 +25,27 @@ module Resolvers
required: false,
description: 'A date that the milestone contains.'
+ argument :sort, Types::MilestoneSortEnum,
+ description: 'Sort milestones by this criteria.',
+ required: false,
+ default_value: :due_date_asc
+
type Types::MilestoneType.connection_type, null: true
+ NON_STABLE_CURSOR_SORTS = %i[expired_last_due_date_asc expired_last_due_date_desc].freeze
+
def resolve(**args)
validate_timeframe_params!(args)
authorize!
- MilestonesFinder.new(milestones_finder_params(args)).execute
+ milestones = MilestonesFinder.new(milestones_finder_params(args)).execute
+
+ if non_stable_cursor_sort?(args[:sort])
+ offset_pagination(milestones)
+ else
+ milestones
+ end
end
private
@@ -43,6 +56,7 @@ module Resolvers
state: args[:state] || 'all',
title: args[:title],
search_title: args[:search_title],
+ sort: args[:sort],
containing_date: args[:containing_date]
}.merge!(transform_timeframe_parameters(args)).merge!(parent_id_parameters(args))
end
@@ -64,5 +78,9 @@ module Resolvers
def parse_gids(gids)
gids&.map { |gid| GitlabSchema.parse_gid(gid, expected_type: Milestone).model_id }
end
+
+ def non_stable_cursor_sort?(sort)
+ NON_STABLE_CURSOR_SORTS.include?(sort)
+ end
end
end