diff options
Diffstat (limited to 'app/graphql/resolvers/concerns')
5 files changed, 43 insertions, 10 deletions
diff --git a/app/graphql/resolvers/concerns/group_issuable_resolver.rb b/app/graphql/resolvers/concerns/group_issuable_resolver.rb new file mode 100644 index 00000000000..49a79683e9f --- /dev/null +++ b/app/graphql/resolvers/concerns/group_issuable_resolver.rb @@ -0,0 +1,14 @@ +# frozen_string_literal: true + +module GroupIssuableResolver + extend ActiveSupport::Concern + + class_methods do + def include_subgroups(name_of_things) + argument :include_subgroups, GraphQL::BOOLEAN_TYPE, + required: false, + default_value: false, + description: "Include #{name_of_things} belonging to subgroups" + end + end +end diff --git a/app/graphql/resolvers/concerns/issue_resolver_arguments.rb b/app/graphql/resolvers/concerns/issue_resolver_arguments.rb index 2b14d8275d1..fe6fa0bb262 100644 --- a/app/graphql/resolvers/concerns/issue_resolver_arguments.rb +++ b/app/graphql/resolvers/concerns/issue_resolver_arguments.rb @@ -18,9 +18,15 @@ module IssueResolverArguments argument :milestone_title, GraphQL::STRING_TYPE.to_list_type, required: false, description: 'Milestone applied to this issue' + argument :author_username, GraphQL::STRING_TYPE, + required: false, + description: 'Username of the author of the issue' argument :assignee_username, GraphQL::STRING_TYPE, required: false, description: 'Username of a user assigned to the issue' + argument :assignee_usernames, [GraphQL::STRING_TYPE], + required: false, + description: 'Usernames of users assigned to the issue' argument :assignee_id, GraphQL::STRING_TYPE, required: false, description: 'ID of a user assigned to the issues, "none" and "any" values supported' diff --git a/app/graphql/resolvers/concerns/looks_ahead.rb b/app/graphql/resolvers/concerns/looks_ahead.rb index e7230287e13..61f23920ebb 100644 --- a/app/graphql/resolvers/concerns/looks_ahead.rb +++ b/app/graphql/resolvers/concerns/looks_ahead.rb @@ -3,8 +3,6 @@ module LooksAhead extend ActiveSupport::Concern - FEATURE_FLAG = :graphql_lookahead_support - included do attr_accessor :lookahead end @@ -16,8 +14,6 @@ module LooksAhead end def apply_lookahead(query) - return query unless Feature.enabled?(FEATURE_FLAG) - selection = node_selection includes = preloads.each.flat_map do |name, requirements| diff --git a/app/graphql/resolvers/concerns/resolves_merge_requests.rb b/app/graphql/resolvers/concerns/resolves_merge_requests.rb index 0c01efd4f9a..ab83476ddea 100644 --- a/app/graphql/resolvers/concerns/resolves_merge_requests.rb +++ b/app/graphql/resolvers/concerns/resolves_merge_requests.rb @@ -12,7 +12,7 @@ module ResolvesMergeRequests def resolve_with_lookahead(**args) mr_finder = MergeRequestsFinder.new(current_user, args.compact) - finder = Gitlab::Graphql::Loaders::IssuableLoader.new(project, mr_finder) + finder = Gitlab::Graphql::Loaders::IssuableLoader.new(mr_parent, mr_finder) select_result(finder.batching_find_all { |query| apply_lookahead(query) }) end @@ -29,6 +29,10 @@ module ResolvesMergeRequests private + def mr_parent + project + end + def unconditional_includes [:target_project] end @@ -40,7 +44,8 @@ module ResolvesMergeRequests author: [:author], merged_at: [:metrics], commit_count: [:metrics], - approved_by: [:approver_users], + diff_stats_summary: [:metrics], + approved_by: [:approved_by_users], milestone: [:milestone], head_pipeline: [:merge_request_diff, { head_pipeline: [:merge_request] }] } diff --git a/app/graphql/resolvers/concerns/time_frame_arguments.rb b/app/graphql/resolvers/concerns/time_frame_arguments.rb index ef333dd05a5..94bfe6f7f9f 100644 --- a/app/graphql/resolvers/concerns/time_frame_arguments.rb +++ b/app/graphql/resolvers/concerns/time_frame_arguments.rb @@ -3,21 +3,33 @@ module TimeFrameArguments extend ActiveSupport::Concern + OVERLAPPING_TIMEFRAME_DESC = 'List items overlapping a time frame defined by startDate..endDate (if one date is provided, both must be present)' + included do argument :start_date, Types::TimeType, required: false, - description: 'List items within a time frame where items.start_date is between startDate and endDate parameters (endDate parameter must be present)' + description: OVERLAPPING_TIMEFRAME_DESC, + deprecated: { reason: 'Use timeframe.start', milestone: '13.5' } argument :end_date, Types::TimeType, required: false, - description: 'List items within a time frame where items.end_date is between startDate and endDate parameters (startDate parameter must be present)' + description: OVERLAPPING_TIMEFRAME_DESC, + deprecated: { reason: 'Use timeframe.end', milestone: '13.5' } + + argument :timeframe, Types::TimeframeInputType, + required: false, + description: 'List items overlapping the given timeframe' end + # TODO: remove when the start_date and end_date arguments are removed def validate_timeframe_params!(args) - return unless args[:start_date].present? || args[:end_date].present? + return unless %i[start_date end_date timeframe].any? { |k| args[k].present? } + return if args[:timeframe] && %i[start_date end_date].all? { |k| args[k].nil? } error_message = - if args[:start_date].nil? || args[:end_date].nil? + if args[:timeframe].present? + "startDate and endDate are deprecated in favor of timeframe. Please use only timeframe." + elsif args[:start_date].nil? || args[:end_date].nil? "Both startDate and endDate must be present." elsif args[:start_date] > args[:end_date] "startDate is after endDate" |