diff options
Diffstat (limited to 'app/models/merge_request.rb')
-rw-r--r-- | app/models/merge_request.rb | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index d379f85bc15..46673917008 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -314,6 +314,31 @@ class MergeRequest < ApplicationRecord scope :with_jira_issue_keys, -> { where('title ~ :regex OR merge_requests.description ~ :regex', regex: Gitlab::Regex.jira_issue_key_regex.source) } + scope :review_requested, -> do + where(reviewers_subquery.exists) + end + + scope :no_review_requested, -> do + where(reviewers_subquery.exists.not) + end + + scope :review_requested_to, ->(user) do + where( + reviewers_subquery + .where(Arel::Table.new("#{to_ability_name}_reviewers")[:user_id].eq(user)) + .exists + ) + end + + scope :no_review_requested_to, ->(user) do + where( + reviewers_subquery + .where(Arel::Table.new("#{to_ability_name}_reviewers")[:user_id].eq(user)) + .exists + .not + ) + end + after_save :keep_around_commit, unless: :importing? alias_attribute :project, :target_project @@ -361,6 +386,12 @@ class MergeRequest < ApplicationRecord end end + def self.reviewers_subquery + MergeRequestReviewer.arel_table + .project('true') + .where(Arel::Nodes::SqlLiteral.new("#{to_ability_name}_id = #{to_ability_name}s.id")) + end + def rebase_in_progress? rebase_jid.present? && Gitlab::SidekiqStatus.running?(rebase_jid) end |