diff options
Diffstat (limited to 'lib/gitlab/analytics/cycle_analytics')
-rw-r--r-- | lib/gitlab/analytics/cycle_analytics/aggregated/base_query_builder.rb | 20 | ||||
-rw-r--r-- | lib/gitlab/analytics/cycle_analytics/request_params.rb | 27 |
2 files changed, 39 insertions, 8 deletions
diff --git a/lib/gitlab/analytics/cycle_analytics/aggregated/base_query_builder.rb b/lib/gitlab/analytics/cycle_analytics/aggregated/base_query_builder.rb index 41f94e79f91..fc0e4ab5a0d 100644 --- a/lib/gitlab/analytics/cycle_analytics/aggregated/base_query_builder.rb +++ b/lib/gitlab/analytics/cycle_analytics/aggregated/base_query_builder.rb @@ -50,8 +50,7 @@ module Gitlab def filter_author(query) return query if params[:author_username].blank? - user = User.by_username(params[:author_username]).first - + user = find_user(params[:author_username]) return query.none if user.blank? query.authored(user) @@ -60,11 +59,7 @@ module Gitlab def filter_milestone_ids(query) return query if params[:milestone_title].blank? - milestone = MilestonesFinder - .new(group_ids: root_ancestor.self_and_descendant_ids, project_ids: root_ancestor.all_projects.select(:id), title: params[:milestone_title]) - .execute - .first - + milestone = find_milestone(params[:milestone_title]) return query.none if milestone.blank? query.with_milestone_id(milestone.id) @@ -115,6 +110,17 @@ module Gitlab private attr_reader :stage, :params, :root_ancestor, :stage_event_model + + def find_milestone(title) + MilestonesFinder + .new(group_ids: root_ancestor.self_and_descendant_ids, project_ids: root_ancestor.all_projects.select(:id), title: title) + .execute + .first + end + + def find_user(username) + User.by_username(username).first + end end # rubocop: enable CodeReuse/ActiveRecord end diff --git a/lib/gitlab/analytics/cycle_analytics/request_params.rb b/lib/gitlab/analytics/cycle_analytics/request_params.rb index 2c4b0215307..cea25ba2db4 100644 --- a/lib/gitlab/analytics/cycle_analytics/request_params.rb +++ b/lib/gitlab/analytics/cycle_analytics/request_params.rb @@ -12,6 +12,24 @@ module Gitlab MAX_RANGE_DAYS = 180.days.freeze DEFAULT_DATE_RANGE = 29.days # 30 including Date.today + NEGATABLE_PARAMS = [ + :assignee_username, + :author_username, + :epic_id, + :iteration_id, + :label_name, + :milestone_title, + :my_reaction_emoji, + :weight + ].freeze + + LICENSED_PARAMS = [ + :weight, + :epic_id, + :my_reaction_emoji, + :iteration_id + ].freeze + STRONG_PARAMS_DEFINITION = [ :created_before, :created_after, @@ -22,9 +40,11 @@ module Gitlab :page, :stage_id, :end_event_filter, + *LICENSED_PARAMS, label_name: [].freeze, assignee_username: [].freeze, - project_ids: [].freeze + project_ids: [].freeze, + not: NEGATABLE_PARAMS ].freeze FINDER_PARAM_NAMES = [ @@ -46,6 +66,11 @@ module Gitlab attribute :page attribute :stage_id attribute :end_event_filter + attribute :weight + attribute :epic_id + attribute :my_reaction_emoji + attribute :iteration_id + attribute :not, default: -> { {} } FINDER_PARAM_NAMES.each do |param_name| attribute param_name |