summaryrefslogtreecommitdiff
path: root/lib/gitlab/background_migration/add_modified_to_approval_merge_request_rule.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/background_migration/add_modified_to_approval_merge_request_rule.rb')
-rw-r--r--lib/gitlab/background_migration/add_modified_to_approval_merge_request_rule.rb73
1 files changed, 0 insertions, 73 deletions
diff --git a/lib/gitlab/background_migration/add_modified_to_approval_merge_request_rule.rb b/lib/gitlab/background_migration/add_modified_to_approval_merge_request_rule.rb
deleted file mode 100644
index 2148e96f6b4..00000000000
--- a/lib/gitlab/background_migration/add_modified_to_approval_merge_request_rule.rb
+++ /dev/null
@@ -1,73 +0,0 @@
-# frozen_string_literal: true
-
-module Gitlab
- module BackgroundMigration
- # Compare all current rules to project rules
- class AddModifiedToApprovalMergeRequestRule
- # Stubbed class to access the Group table
- class Group < ActiveRecord::Base
- self.table_name = 'namespaces'
- self.inheritance_column = :_type_disabled
- end
-
- # Stubbed class to access the ApprovalMergeRequestRule table
- class ApprovalMergeRequestRule < ActiveRecord::Base
- self.table_name = 'approval_merge_request_rules'
-
- has_one :approval_merge_request_rule_source, class_name: 'AddModifiedToApprovalMergeRequestRule::ApprovalMergeRequestRuleSource'
- has_one :approval_project_rule, through: :approval_merge_request_rule_source
- has_and_belongs_to_many :groups,
- class_name: 'AddModifiedToApprovalMergeRequestRule::Group', join_table: "#{self.table_name}_groups"
- end
-
- # Stubbed class to access the ApprovalProjectRule table
- class ApprovalProjectRule < ActiveRecord::Base
- self.table_name = 'approval_project_rules'
-
- has_many :approval_merge_request_rule_sources, class_name: 'AddModifiedToApprovalMergeRequestRule::ApprovalMergeRequestRuleSource'
- has_and_belongs_to_many :groups,
- class_name: 'AddModifiedToApprovalMergeRequestRule::Group', join_table: "#{self.table_name}_groups"
- end
-
- # Stubbed class to access the ApprovalMergeRequestRuleSource table
- class ApprovalMergeRequestRuleSource < ActiveRecord::Base
- self.table_name = 'approval_merge_request_rule_sources'
-
- belongs_to :approval_merge_request_rule, class_name: 'AddModifiedToApprovalMergeRequestRule::ApprovalMergeRequestRule'
- belongs_to :approval_project_rule, class_name: 'AddModifiedToApprovalMergeRequestRule::ApprovalProjectRule'
- end
-
- def perform(start_id, stop_id)
- approval_merge_requests_rules = ApprovalMergeRequestRule
- .joins(:groups, :approval_merge_request_rule_source)
- .where(id: start_id..stop_id)
- .pluck(
- 'approval_merge_request_rule_sources.id as ars_id',
- 'approval_merge_request_rules_groups.id as amrg_id'
- )
-
- approval_project_rules = ApprovalProjectRule
- .joins(:groups, approval_merge_request_rule_sources: :approval_merge_request_rule)
- .where(approval_merge_request_rules: { id: start_id..stop_id })
- .pluck(
- 'approval_merge_request_rule_sources.id as ars_id',
- 'approval_project_rules_groups.id as apg_id'
- )
-
- different_names_or_approval_sources = ApprovalMergeRequestRule.joins(:approval_project_rule, :approval_merge_request_rule_source)
- .where(id: start_id..stop_id)
- .where('approval_merge_request_rules.name != approval_project_rules.name OR ' \
- 'approval_merge_request_rules.approvals_required != approval_project_rules.approvals_required')
- .pluck('approval_merge_request_rule_sources.id as ars_id')
-
- intersected_set = approval_merge_requests_rules.to_set ^ approval_project_rules.to_set
- source_ids = intersected_set.collect { |rule| rule[0] }.uniq
-
- rule_sources = ApprovalMergeRequestRuleSource.where(id: source_ids + different_names_or_approval_sources)
- changed_merge_request_rules = ApprovalMergeRequestRule.where(id: rule_sources.select(:approval_merge_request_rule_id))
-
- changed_merge_request_rules.update_all(modified_from_project_rule: true)
- end
- end
- end
-end