diff options
Diffstat (limited to 'app/services')
88 files changed, 342 insertions, 0 deletions
diff --git a/app/services/applications/create_service.rb b/app/services/applications/create_service.rb index 7db90c0b3c6..3d88c4f064e 100644 --- a/app/services/applications/create_service.rb +++ b/app/services/applications/create_service.rb @@ -2,10 +2,12 @@ module Applications class CreateService + # rubocop: disable CodeReuse/ActiveRecord def initialize(current_user, params) @current_user = current_user @params = params.except(:ip_address) end + # rubocop: enable CodeReuse/ActiveRecord def execute(request) Doorkeeper::Application.create(@params) diff --git a/app/services/boards/issues/list_service.rb b/app/services/boards/issues/list_service.rb index 0db1418b37a..4e352f2dc63 100644 --- a/app/services/boards/issues/list_service.rb +++ b/app/services/boards/issues/list_service.rb @@ -9,6 +9,7 @@ module Boards fetch_issues.order_by_position_and_priority end + # rubocop: disable CodeReuse/ActiveRecord def metadata keys = metadata_fields.keys columns = metadata_fields.values_at(*keys).join(', ') @@ -16,6 +17,7 @@ module Boards Hash[keys.zip(results.flatten)] end + # rubocop: enable CodeReuse/ActiveRecord private @@ -24,6 +26,7 @@ module Boards end # We memoize the query here since the finder methods we use are quite complex. This does not memoize the result of the query. + # rubocop: disable CodeReuse/ActiveRecord def fetch_issues strong_memoize(:fetch_issues) do issues = IssuesFinder.new(current_user, filter_params).execute @@ -31,6 +34,7 @@ module Boards filter(issues).reorder(nil) end end + # rubocop: enable CodeReuse/ActiveRecord def filter(issues) issues = without_board_labels(issues) unless list&.movable? || list&.closed? @@ -72,24 +76,32 @@ module Boards params[:include_subgroups] = board.group_board? end + # rubocop: disable CodeReuse/ActiveRecord def board_label_ids @board_label_ids ||= board.lists.movable.pluck(:label_id) end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def without_board_labels(issues) return issues unless board_label_ids.any? issues.where.not('EXISTS (?)', issues_label_links.limit(1)) end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def issues_label_links LabelLink.where("label_links.target_type = 'Issue' AND label_links.target_id = issues.id").where(label_id: board_label_ids) end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def with_list_label(issues) issues.where('EXISTS (?)', LabelLink.where("label_links.target_type = 'Issue' AND label_links.target_id = issues.id") .where("label_links.label_id = ?", list.label_id).limit(1)) end + # rubocop: enable CodeReuse/ActiveRecord end end end diff --git a/app/services/boards/issues/move_service.rb b/app/services/boards/issues/move_service.rb index 6fd8a23b2a1..7dd87034410 100644 --- a/app/services/boards/issues/move_service.rb +++ b/app/services/boards/issues/move_service.rb @@ -21,13 +21,17 @@ module Boards moving_from_list != moving_to_list end + # rubocop: disable CodeReuse/ActiveRecord def moving_from_list @moving_from_list ||= board.lists.find_by(id: params[:from_list_id]) end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def moving_to_list @moving_to_list ||= board.lists.find_by(id: params[:to_list_id]) end + # rubocop: enable CodeReuse/ActiveRecord def update(issue) ::Issues::UpdateService.new(issue.project, current_user, issue_params(issue)).execute(issue) @@ -61,6 +65,7 @@ module Boards [moving_to_list.label_id].compact end + # rubocop: disable CodeReuse/ActiveRecord def remove_label_ids label_ids = if moving_to_list.movable? @@ -73,6 +78,7 @@ module Boards Array(label_ids).compact end + # rubocop: enable CodeReuse/ActiveRecord def move_between_ids return unless params[:move_after_id] || params[:move_before_id] diff --git a/app/services/boards/lists/destroy_service.rb b/app/services/boards/lists/destroy_service.rb index e12d4f46e19..609c430caed 100644 --- a/app/services/boards/lists/destroy_service.rb +++ b/app/services/boards/lists/destroy_service.rb @@ -18,10 +18,12 @@ module Boards attr_reader :board + # rubocop: disable CodeReuse/ActiveRecord def decrement_higher_lists(list) board.lists.movable.where('position > ?', list.position) .update_all('position = position - 1') end + # rubocop: enable CodeReuse/ActiveRecord def remove_list(list) list.destroy diff --git a/app/services/boards/lists/move_service.rb b/app/services/boards/lists/move_service.rb index 27a36051662..93f81837d1a 100644 --- a/app/services/boards/lists/move_service.rb +++ b/app/services/boards/lists/move_service.rb @@ -34,17 +34,21 @@ module Boards end end + # rubocop: disable CodeReuse/ActiveRecord def decrement_intermediate_lists board.lists.movable.where('position > ?', old_position) .where('position <= ?', new_position) .update_all('position = position - 1') end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def increment_intermediate_lists board.lists.movable.where('position >= ?', new_position) .where('position < ?', old_position) .update_all('position = position + 1') end + # rubocop: enable CodeReuse/ActiveRecord def update_list_position(list) list.update_attribute(:position, new_position) diff --git a/app/services/chat_names/find_user_service.rb b/app/services/chat_names/find_user_service.rb index 854b191c45c..c91738fa4c7 100644 --- a/app/services/chat_names/find_user_service.rb +++ b/app/services/chat_names/find_user_service.rb @@ -17,6 +17,7 @@ module ChatNames private + # rubocop: disable CodeReuse/ActiveRecord def find_chat_name ChatName.find_by( service: @service, @@ -24,5 +25,6 @@ module ChatNames chat_id: @params[:user_id] ) end + # rubocop: enable CodeReuse/ActiveRecord end end diff --git a/app/services/ci/compare_test_reports_service.rb b/app/services/ci/compare_test_reports_service.rb index ec25e934a27..2293f95f56b 100644 --- a/app/services/ci/compare_test_reports_service.rb +++ b/app/services/ci/compare_test_reports_service.rb @@ -3,6 +3,7 @@ module Ci class CompareTestReportsService < ::BaseService def execute(base_pipeline, head_pipeline) + # rubocop: disable CodeReuse/Serializer comparer = Gitlab::Ci::Reports::TestReportsComparer .new(base_pipeline&.test_reports, head_pipeline.test_reports) @@ -19,6 +20,7 @@ module Ci key: key(base_pipeline, head_pipeline), status_reason: e.message } + # rubocop: enable CodeReuse/Serializer end def latest?(base_pipeline, head_pipeline, data) diff --git a/app/services/ci/create_pipeline_service.rb b/app/services/ci/create_pipeline_service.rb index 85df8bcff8c..92a8438ab2f 100644 --- a/app/services/ci/create_pipeline_service.rb +++ b/app/services/ci/create_pipeline_service.rb @@ -65,6 +65,7 @@ module Ci end end + # rubocop: disable CodeReuse/ActiveRecord def auto_cancelable_pipelines project.pipelines .where(ref: pipeline.ref) @@ -72,6 +73,7 @@ module Ci .where.not(sha: project.commit(pipeline.ref).try(:id)) .created_or_pending end + # rubocop: enable CodeReuse/ActiveRecord def pipeline_created_counter @pipeline_created_counter ||= Gitlab::Metrics @@ -84,8 +86,10 @@ module Ci end end + # rubocop: disable CodeReuse/ActiveRecord def related_merge_requests pipeline.project.source_of_merge_requests.opened.where(source_branch: pipeline.ref) end + # rubocop: enable CodeReuse/ActiveRecord end end diff --git a/app/services/ci/ensure_stage_service.rb b/app/services/ci/ensure_stage_service.rb index 3d0e39d1b9f..cbb3a2e4709 100644 --- a/app/services/ci/ensure_stage_service.rb +++ b/app/services/ci/ensure_stage_service.rb @@ -38,9 +38,11 @@ module Ci EOS end + # rubocop: disable CodeReuse/ActiveRecord def find_stage @build.pipeline.stages.find_by(name: @build.stage) end + # rubocop: enable CodeReuse/ActiveRecord def create_stage Ci::Stage.create!(name: @build.stage, diff --git a/app/services/ci/extract_sections_from_build_trace_service.rb b/app/services/ci/extract_sections_from_build_trace_service.rb index 693f6d55be3..97f9918fdb7 100644 --- a/app/services/ci/extract_sections_from_build_trace_service.rb +++ b/app/services/ci/extract_sections_from_build_trace_service.rb @@ -11,11 +11,13 @@ module Ci private + # rubocop: disable CodeReuse/ActiveRecord def find_or_create_name(name) project.build_trace_section_names.find_or_create_by!(name: name) rescue ActiveRecord::RecordInvalid project.build_trace_section_names.find_by!(name: name) end + # rubocop: enable CodeReuse/ActiveRecord def extract_sections(build) build.trace.extract_sections.map do |attr| diff --git a/app/services/ci/process_pipeline_service.rb b/app/services/ci/process_pipeline_service.rb index cafee76a33c..69341a6c263 100644 --- a/app/services/ci/process_pipeline_service.rb +++ b/app/services/ci/process_pipeline_service.rb @@ -60,17 +60,23 @@ module Ci end end + # rubocop: disable CodeReuse/ActiveRecord def status_for_prior_stages(index) pipeline.builds.where('stage_idx < ?', index).latest.status || 'success' end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def stage_indexes_of_created_builds created_builds.order(:stage_idx).pluck('distinct stage_idx') end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def created_builds_in_stage(index) created_builds.where(stage_idx: index) end + # rubocop: enable CodeReuse/ActiveRecord def created_builds pipeline.builds.created @@ -80,6 +86,7 @@ module Ci # This replicates what is db/post_migrate/20170416103934_upate_retried_for_ci_build.rb # and ensures that functionality will not be broken before migration is run # this updates only when there are data that needs to be updated, there are two groups with no retried flag + # rubocop: disable CodeReuse/ActiveRecord def update_retried # find the latest builds for each name latest_statuses = pipeline.statuses.latest @@ -93,6 +100,7 @@ module Ci .where.not(id: latest_statuses.map(&:first)) .update_all(retried: true) if latest_statuses.any? end + # rubocop: enable CodeReuse/ActiveRecord def enqueue_build(build) Ci::EnqueueBuildService.new(project, @user).execute(build) diff --git a/app/services/ci/register_job_service.rb b/app/services/ci/register_job_service.rb index 11f85627faf..5a7be921389 100644 --- a/app/services/ci/register_job_service.rb +++ b/app/services/ci/register_job_service.rb @@ -15,6 +15,7 @@ module Ci @runner = runner end + # rubocop: disable CodeReuse/ActiveRecord def execute(params = {}) builds = if runner.instance_type? @@ -63,6 +64,7 @@ module Ci register_failure Result.new(nil, valid) end + # rubocop: enable CodeReuse/ActiveRecord private @@ -84,6 +86,7 @@ module Ci true end + # rubocop: disable CodeReuse/ActiveRecord def builds_for_shared_runner new_builds. # don't run projects which have not enabled shared runners and builds @@ -97,11 +100,15 @@ module Ci joins("LEFT JOIN (#{running_builds_for_shared_runners.to_sql}) AS project_builds ON ci_builds.project_id=project_builds.project_id") .order('COALESCE(project_builds.running_builds, 0) ASC', 'ci_builds.id ASC') end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def builds_for_project_runner new_builds.where(project: runner.projects.without_deleted.with_builds_enabled).order('id ASC') end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def builds_for_group_runner # Workaround for weird Rails bug, that makes `runner.groups.to_sql` to return `runner_id = NULL` groups = ::Group.joins(:runner_namespaces).merge(runner.runner_namespaces) @@ -113,11 +120,14 @@ module Ci .without_deleted new_builds.where(project: projects).order('id ASC') end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def running_builds_for_shared_runners Ci::Build.running.where(runner: Ci::Runner.instance_type) .group(:project_id).select(:project_id, 'count(*) AS running_builds') end + # rubocop: enable CodeReuse/ActiveRecord def new_builds builds = Ci::Build.pending.unstarted @@ -138,6 +148,7 @@ module Ci attempt_counter.increment end + # rubocop: disable CodeReuse/ActiveRecord def jobs_running_for_project(job) return '+Inf' unless runner.instance_type? @@ -146,6 +157,7 @@ module Ci .limit(JOBS_RUNNING_FOR_PROJECT_MAX_BUCKET + 1).count - 1 running_jobs_count < JOBS_RUNNING_FOR_PROJECT_MAX_BUCKET ? running_jobs_count : "#{JOBS_RUNNING_FOR_PROJECT_MAX_BUCKET}+" end + # rubocop: enable CodeReuse/ActiveRecord def failed_attempt_counter @failed_attempt_counter ||= Gitlab::Metrics.counter(:job_register_attempts_failed_total, "Counts the times a runner tries to register a job") diff --git a/app/services/ci/retry_build_service.rb b/app/services/ci/retry_build_service.rb index 6ceb59e4780..218f1e63d08 100644 --- a/app/services/ci/retry_build_service.rb +++ b/app/services/ci/retry_build_service.rb @@ -19,6 +19,7 @@ module Ci end end + # rubocop: disable CodeReuse/ActiveRecord def reprocess!(build) unless can?(current_user, :update_build, build) raise Gitlab::Access::AccessDeniedError @@ -41,5 +42,6 @@ module Ci project.builds.create!(Hash[attributes]) end end + # rubocop: enable CodeReuse/ActiveRecord end end diff --git a/app/services/cohorts_service.rb b/app/services/cohorts_service.rb index 7a14e97f749..6d466c2fc9c 100644 --- a/app/services/cohorts_service.rb +++ b/app/services/cohorts_service.rb @@ -78,6 +78,7 @@ class CohortsService # created_at_month can never be nil, but last_activity_on_month can (when a # user has never logged in, just been created). This covers the last # MONTHS_INCLUDED months. + # rubocop: disable CodeReuse/ActiveRecord def counts_by_month @counts_by_month ||= begin @@ -91,6 +92,7 @@ class CohortsService .count end end + # rubocop: enable CodeReuse/ActiveRecord def column_to_date(column) if Gitlab::Database.postgresql? diff --git a/app/services/concerns/issues/resolve_discussions.rb b/app/services/concerns/issues/resolve_discussions.rb index 1563ed965df..f0e9862ca30 100644 --- a/app/services/concerns/issues/resolve_discussions.rb +++ b/app/services/concerns/issues/resolve_discussions.rb @@ -13,12 +13,14 @@ module Issues end # rubocop:enable Gitlab/ModuleWithInstanceVariables + # rubocop: disable CodeReuse/ActiveRecord def merge_request_to_resolve_discussions_of strong_memoize(:merge_request_to_resolve_discussions_of) do MergeRequestsFinder.new(current_user, project_id: project.id) .find_by(iid: merge_request_to_resolve_discussions_of_iid) end end + # rubocop: enable CodeReuse/ActiveRecord def discussions_to_resolve return [] unless merge_request_to_resolve_discussions_of diff --git a/app/services/create_release_service.rb b/app/services/create_release_service.rb index 09c68390007..8d1fdbe11c3 100644 --- a/app/services/create_release_service.rb +++ b/app/services/create_release_service.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true class CreateReleaseService < BaseService + # rubocop: disable CodeReuse/ActiveRecord def execute(tag_name, release_description) repository = project.repository existing_tag = repository.find_tag(tag_name) @@ -21,6 +22,7 @@ class CreateReleaseService < BaseService error('Tag does not exist', 404) end end + # rubocop: enable CodeReuse/ActiveRecord def success(release) super().merge(release: release) diff --git a/app/services/delete_merged_branches_service.rb b/app/services/delete_merged_branches_service.rb index ff3e4783fe3..ced87a1c37a 100644 --- a/app/services/delete_merged_branches_service.rb +++ b/app/services/delete_merged_branches_service.rb @@ -21,10 +21,12 @@ class DeleteMergedBranchesService < BaseService private + # rubocop: disable CodeReuse/ActiveRecord def merge_request_branch_names # reorder(nil) is necessary for SELECT DISTINCT because default scope adds an ORDER BY source_names = project.origin_merge_requests.opened.reorder(nil).uniq.pluck(:source_branch) target_names = project.merge_requests.opened.reorder(nil).uniq.pluck(:target_branch) (source_names + target_names).uniq end + # rubocop: enable CodeReuse/ActiveRecord end diff --git a/app/services/git_push_service.rb b/app/services/git_push_service.rb index 26e90e8cf8c..f1883877d56 100644 --- a/app/services/git_push_service.rb +++ b/app/services/git_push_service.rb @@ -94,6 +94,7 @@ class GitPushService < BaseService ProjectCacheWorker.perform_async(project.id, types, [:commit_count, :repository_size]) end + # rubocop: disable CodeReuse/ActiveRecord def update_signatures commit_shas = last_pushed_commits.map(&:sha) @@ -108,6 +109,7 @@ class GitPushService < BaseService CreateGpgSignatureWorker.perform_async(commit_shas, project.id) end + # rubocop: enable CodeReuse/ActiveRecord # Schedules processing of commit messages. def process_commit_messages diff --git a/app/services/groups/destroy_service.rb b/app/services/groups/destroy_service.rb index 93d84bd8a9c..641111aeadc 100644 --- a/app/services/groups/destroy_service.rb +++ b/app/services/groups/destroy_service.rb @@ -9,6 +9,7 @@ module Groups Rails.logger.info("User #{current_user.id} scheduled a deletion of group ID #{group.id} with job ID #{job_id}") end + # rubocop: disable CodeReuse/ActiveRecord def execute group.prepare_for_destroy @@ -30,5 +31,6 @@ module Groups group.destroy end + # rubocop: enable CodeReuse/ActiveRecord end end diff --git a/app/services/groups/transfer_service.rb b/app/services/groups/transfer_service.rb index ea7576077f3..5efa746dfb9 100644 --- a/app/services/groups/transfer_service.rb +++ b/app/services/groups/transfer_service.rb @@ -64,9 +64,11 @@ module Groups end end + # rubocop: disable CodeReuse/ActiveRecord def namespace_with_same_path? Namespace.exists?(path: @group.path, parent: @new_parent_group) end + # rubocop: enable CodeReuse/ActiveRecord def update_group_attributes if @new_parent_group && @new_parent_group.visibility_level < @group.visibility_level @@ -78,6 +80,7 @@ module Groups @group.save! end + # rubocop: disable CodeReuse/ActiveRecord def update_children_and_projects_visibility descendants = @group.descendants.where("visibility_level > ?", @new_parent_group.visibility_level) @@ -90,6 +93,7 @@ module Groups .where("visibility_level > ?", @new_parent_group.visibility_level) .update_all(visibility_level: @new_parent_group.visibility_level) end + # rubocop: enable CodeReuse/ActiveRecord def raise_transfer_error(message) raise TransferError, ERROR_MESSAGES[message] diff --git a/app/services/import_export_clean_up_service.rb b/app/services/import_export_clean_up_service.rb index e75a951944e..3ecb51b60d0 100644 --- a/app/services/import_export_clean_up_service.rb +++ b/app/services/import_export_clean_up_service.rb @@ -26,10 +26,12 @@ class ImportExportCleanUpService Gitlab::Popen.popen(%W(find #{path} -not -path #{path} -mmin +#{mmin} -delete)) end + # rubocop: disable CodeReuse/ActiveRecord def clean_up_export_object_files ImportExportUpload.where('updated_at < ?', mmin.minutes.ago).each do |upload| upload.remove_export_file! upload.save! end end + # rubocop: enable CodeReuse/ActiveRecord end diff --git a/app/services/issuable/bulk_update_service.rb b/app/services/issuable/bulk_update_service.rb index 051d5ba881d..c4beddf2294 100644 --- a/app/services/issuable/bulk_update_service.rb +++ b/app/services/issuable/bulk_update_service.rb @@ -2,6 +2,7 @@ module Issuable class BulkUpdateService < IssuableBaseService + # rubocop: disable CodeReuse/ActiveRecord def execute(type) model_class = type.classify.constantize update_class = type.classify.pluralize.constantize::UpdateService @@ -28,6 +29,7 @@ module Issuable success: !items.count.zero? } end + # rubocop: enable CodeReuse/ActiveRecord private diff --git a/app/services/issuable_base_service.rb b/app/services/issuable_base_service.rb index 1259c2c2b3d..3e8b9f84042 100644 --- a/app/services/issuable_base_service.rb +++ b/app/services/issuable_base_service.rb @@ -68,11 +68,13 @@ class IssuableBaseService < BaseService find_or_create_label_ids end + # rubocop: disable CodeReuse/ActiveRecord def filter_labels_in_param(key) return if params[key].to_a.empty? params[key] = available_labels.where(id: params[key]).pluck(:id) end + # rubocop: enable CodeReuse/ActiveRecord def find_or_create_label_ids labels = params.delete(:labels) @@ -247,6 +249,7 @@ class IssuableBaseService < BaseService end end + # rubocop: disable CodeReuse/ActiveRecord def change_todo(issuable) case params.delete(:todo_event) when 'add' @@ -256,6 +259,7 @@ class IssuableBaseService < BaseService todo_service.mark_todos_as_done_by_ids(todo, current_user) if todo end end + # rubocop: enable CodeReuse/ActiveRecord def toggle_award(issuable) award = params.delete(:emoji_award) diff --git a/app/services/issues/base_service.rb b/app/services/issues/base_service.rb index 25389a946bb..ef08adf4f92 100644 --- a/app/services/issues/base_service.rb +++ b/app/services/issues/base_service.rb @@ -31,6 +31,7 @@ module Issues issue.project.execute_services(issue_data, hooks_scope) end + # rubocop: disable CodeReuse/ActiveRecord def filter_assignee(issuable) return if params[:assignee_ids].blank? @@ -48,6 +49,7 @@ module Issues params.delete(:assignee_ids) end end + # rubocop: enable CodeReuse/ActiveRecord def update_project_counter_caches?(issue) super || issue.confidential_changed? diff --git a/app/services/issues/move_service.rb b/app/services/issues/move_service.rb index ec9d8944e4e..d2bdba1e627 100644 --- a/app/services/issues/move_service.rb +++ b/app/services/issues/move_service.rb @@ -58,6 +58,7 @@ module Issues CreateService.new(@new_project, @current_user, new_params).execute end + # rubocop: disable CodeReuse/ActiveRecord def cloneable_label_ids params = { project_id: @new_project.id, @@ -67,6 +68,7 @@ module Issues LabelsFinder.new(current_user, params).execute.pluck(:id) end + # rubocop: enable CodeReuse/ActiveRecord def cloneable_milestone_id title = @old_issue.milestone&.title @@ -97,6 +99,7 @@ module Issues end end + # rubocop: disable CodeReuse/ActiveRecord def copy_resource_label_events @old_issue.resource_label_events.find_in_batches do |batch| events = batch.map do |event| @@ -108,6 +111,7 @@ module Issues Gitlab::Database.bulk_insert(ResourceLabelEvent.table_name, events) end end + # rubocop: enable CodeReuse/ActiveRecord def rewrite_issue_award_emoji rewrite_award_emoji(@old_issue, @new_issue) diff --git a/app/services/issues/referenced_merge_requests_service.rb b/app/services/issues/referenced_merge_requests_service.rb index 40d78502697..a69cd324b1e 100644 --- a/app/services/issues/referenced_merge_requests_service.rb +++ b/app/services/issues/referenced_merge_requests_service.rb @@ -2,6 +2,7 @@ module Issues class ReferencedMergeRequestsService < Issues::BaseService + # rubocop: disable CodeReuse/ActiveRecord def execute(issue) referenced = referenced_merge_requests(issue) closed_by = closed_by_merge_requests(issue) @@ -12,6 +13,7 @@ module Issues [sort_by_iid(referenced), sort_by_iid(closed_by)] end + # rubocop: enable CodeReuse/ActiveRecord def referenced_merge_requests(issue) merge_requests = extract_merge_requests(issue) @@ -29,6 +31,7 @@ module Issues ) end + # rubocop: disable CodeReuse/ActiveRecord def closed_by_merge_requests(issue) return [] unless issue.open? @@ -39,6 +42,7 @@ module Issues ids = MergeRequestsClosingIssues.where(merge_request_id: merge_requests.map(&:id), issue_id: issue.id).pluck(:merge_request_id) merge_requests.select { |mr| mr.id.in?(ids) } end + # rubocop: enable CodeReuse/ActiveRecord private @@ -54,10 +58,12 @@ module Issues ext.merge_requests end + # rubocop: disable CodeReuse/ActiveRecord def issue_notes(issue) @issue_notes ||= {} @issue_notes[issue] ||= issue.notes.includes(:author) end + # rubocop: enable CodeReuse/ActiveRecord def sort_by_iid(merge_requests) Gitlab::IssuableSorter.sort(project, merge_requests) { |mr| mr.iid.to_s } diff --git a/app/services/issues/update_service.rb b/app/services/issues/update_service.rb index faa4c8a5a4f..b54b0bf6ef6 100644 --- a/app/services/issues/update_service.rb +++ b/app/services/issues/update_service.rb @@ -67,6 +67,7 @@ module Issues issue.move_between(issue_before, issue_after) end + # rubocop: disable CodeReuse/ActiveRecord def change_issue_duplicate(issue) canonical_issue_id = params.delete(:canonical_issue_id) canonical_issue = IssuesFinder.new(current_user).find_by(id: canonical_issue_id) @@ -75,6 +76,7 @@ module Issues Issues::DuplicateService.new(project, current_user).execute(issue, canonical_issue) end end + # rubocop: enable CodeReuse/ActiveRecord def move_issue_to_new_project(issue) target_project = params.delete(:target_project) @@ -89,6 +91,7 @@ module Issues private + # rubocop: disable CodeReuse/ActiveRecord def get_issue_if_allowed(id, board_group_id = nil) return unless id @@ -101,6 +104,7 @@ module Issues issue if can?(current_user, :update_issue, issue) end + # rubocop: enable CodeReuse/ActiveRecord def create_confidentiality_note(issue) SystemNoteService.change_issue_confidentiality(issue, issue.project, current_user) diff --git a/app/services/labels/find_or_create_service.rb b/app/services/labels/find_or_create_service.rb index e4486764a4d..628873519d7 100644 --- a/app/services/labels/find_or_create_service.rb +++ b/app/services/labels/find_or_create_service.rb @@ -29,6 +29,7 @@ module Labels # Only creates the label if current_user can do so, if the label does not exist # and the user can not create the label, nil is returned + # rubocop: disable CodeReuse/ActiveRecord def find_or_create_label new_label = available_labels.find_by(title: title) @@ -39,6 +40,7 @@ module Labels new_label end + # rubocop: enable CodeReuse/ActiveRecord def title params[:title] || params[:name] diff --git a/app/services/labels/promote_service.rb b/app/services/labels/promote_service.rb index fcdcea2d0ea..f30ad706c63 100644 --- a/app/services/labels/promote_service.rb +++ b/app/services/labels/promote_service.rb @@ -4,6 +4,7 @@ module Labels class PromoteService < BaseService BATCH_SIZE = 1000 + # rubocop: disable CodeReuse/ActiveRecord def execute(label) return unless project.group && label.is_a?(ProjectLabel) @@ -27,9 +28,11 @@ module Labels new_label end end + # rubocop: enable CodeReuse/ActiveRecord private + # rubocop: disable CodeReuse/ActiveRecord def subscribe_users(new_label, label_ids) # users can be subscribed to multiple labels that will be merged into the group one # we want to keep only one subscription / user @@ -38,7 +41,9 @@ module Labels .pluck('MAX(id)') Subscription.where(id: ids_to_update).update_all(subscribable_id: new_label.id) end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def label_ids_for_merge(new_label) LabelsFinder .new(current_user, title: new_label.title, group_id: project.group.id) @@ -46,34 +51,45 @@ module Labels .where.not(id: new_label) .select(:id) # Can't use pluck() to avoid object-creation because of the batching end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def update_issuables(new_label, label_ids) LabelLink .where(label: label_ids) .update_all(label_id: new_label) end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def update_resource_label_events(new_label, label_ids) ResourceLabelEvent .where(label: label_ids) .update_all(label_id: new_label) end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def update_issue_board_lists(new_label, label_ids) List .where(label: label_ids) .update_all(label_id: new_label) end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def update_priorities(new_label, label_ids) LabelPriority .where(label: label_ids) .update_all(label_id: new_label) end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def update_project_labels(label_ids) Label.where(id: label_ids).destroy_all # rubocop: disable DestroyAll end + # rubocop: enable CodeReuse/ActiveRecord def clone_label_to_group_label(label) params = label.attributes.slice('title', 'description', 'color') diff --git a/app/services/labels/transfer_service.rb b/app/services/labels/transfer_service.rb index 1bd8d9fc325..aec0282b31b 100644 --- a/app/services/labels/transfer_service.rb +++ b/app/services/labels/transfer_service.rb @@ -32,6 +32,7 @@ module Labels attr_reader :current_user, :old_group, :project + # rubocop: disable CodeReuse/ActiveRecord def labels_to_transfer label_ids = [] label_ids << group_labels_applied_to_issues.select(:id) @@ -41,7 +42,9 @@ module Labels Label.where("labels.id IN (#{union.to_sql})").reorder(nil).uniq # rubocop:disable GitlabSecurity/SqlInjection end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def group_labels_applied_to_issues Label.joins(:issues) .where( @@ -49,7 +52,9 @@ module Labels labels: { type: 'GroupLabel', group_id: old_group.id } ) end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def group_labels_applied_to_merge_requests Label.joins(:merge_requests) .where( @@ -57,6 +62,7 @@ module Labels labels: { type: 'GroupLabel', group_id: old_group.id } ) end + # rubocop: enable CodeReuse/ActiveRecord def find_or_create_label!(label) params = label.attributes.slice('title', 'description', 'color') @@ -65,6 +71,7 @@ module Labels new_label.id end + # rubocop: disable CodeReuse/ActiveRecord def update_label_links(labels, old_label_id:, new_label_id:) # use 'labels' relation to get label_link ids only of issues/MRs # in the project being transferred. @@ -76,10 +83,13 @@ module Labels LabelLink.where(id: link_ids, label_id: old_label_id) .update_all(label_id: new_label_id) end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def update_label_priorities(old_label_id:, new_label_id:) LabelPriority.where(project_id: project.id, label_id: old_label_id) .update_all(label_id: new_label_id) end + # rubocop: enable CodeReuse/ActiveRecord end end diff --git a/app/services/lfs/file_transformer.rb b/app/services/lfs/file_transformer.rb index c8eccb8e6cd..6ecf583cb6a 100644 --- a/app/services/lfs/file_transformer.rb +++ b/app/services/lfs/file_transformer.rb @@ -55,11 +55,13 @@ module Lfs @cached_attributes ||= Gitlab::Git::AttributesAtRefParser.new(repository, branch_name) end + # rubocop: disable CodeReuse/ActiveRecord def create_lfs_object!(lfs_pointer_file, file_content) LfsObject.find_or_create_by(oid: lfs_pointer_file.sha256, size: lfs_pointer_file.size) do |lfs_object| lfs_object.file = CarrierWaveStringFile.new(file_content) end end + # rubocop: enable CodeReuse/ActiveRecord def link_lfs_object!(lfs_object) project.lfs_objects << lfs_object diff --git a/app/services/lfs/lock_file_service.rb b/app/services/lfs/lock_file_service.rb index 78434909d68..c7730d24bdc 100644 --- a/app/services/lfs/lock_file_service.rb +++ b/app/services/lfs/lock_file_service.rb @@ -18,9 +18,11 @@ module Lfs private + # rubocop: disable CodeReuse/ActiveRecord def current_lock project.lfs_file_locks.find_by(path: params[:path]) end + # rubocop: enable CodeReuse/ActiveRecord def create_lock! lock = project.lfs_file_locks.create!(user: current_user, diff --git a/app/services/lfs/locks_finder_service.rb b/app/services/lfs/locks_finder_service.rb index d52cf0e3cc4..4a5b2a52921 100644 --- a/app/services/lfs/locks_finder_service.rb +++ b/app/services/lfs/locks_finder_service.rb @@ -10,10 +10,12 @@ module Lfs private + # rubocop: disable CodeReuse/ActiveRecord def find_locks options = params.slice(:id, :path).compact.symbolize_keys project.lfs_file_locks.where(options) end + # rubocop: enable CodeReuse/ActiveRecord end end diff --git a/app/services/lfs/unlock_file_service.rb b/app/services/lfs/unlock_file_service.rb index 4d1443bf772..a42916d86bb 100644 --- a/app/services/lfs/unlock_file_service.rb +++ b/app/services/lfs/unlock_file_service.rb @@ -32,6 +32,7 @@ module Lfs end end + # rubocop: disable CodeReuse/ActiveRecord def lock return @lock if defined?(@lock) @@ -41,5 +42,6 @@ module Lfs project.lfs_file_locks.find_by!(path: params[:path]) end end + # rubocop: enable CodeReuse/ActiveRecord end end diff --git a/app/services/merge_requests/base_service.rb b/app/services/merge_requests/base_service.rb index e6dd0e12a3a..aa5d8406d0f 100644 --- a/app/services/merge_requests/base_service.rb +++ b/app/services/merge_requests/base_service.rb @@ -55,6 +55,7 @@ module MergeRequests end # Returns all origin and fork merge requests from `@project` satisfying passed arguments. + # rubocop: disable CodeReuse/ActiveRecord def merge_requests_for(source_branch, mr_states: [:opened]) MergeRequest .with_state(mr_states) @@ -62,6 +63,7 @@ module MergeRequests .preload(:source_project) # we don't need a #includes since we're just preloading for the #select .select(&:source_project) end + # rubocop: enable CodeReuse/ActiveRecord def pipeline_merge_requests(pipeline) merge_requests_for(pipeline.ref).each do |merge_request| diff --git a/app/services/merge_requests/create_from_issue_service.rb b/app/services/merge_requests/create_from_issue_service.rb index d9a29693987..020af0bb950 100644 --- a/app/services/merge_requests/create_from_issue_service.rb +++ b/app/services/merge_requests/create_from_issue_service.rb @@ -32,9 +32,11 @@ module MergeRequests private + # rubocop: disable CodeReuse/ActiveRecord def issue @issue ||= IssuesFinder.new(current_user, project_id: project.id).find_by(iid: @issue_iid) end + # rubocop: enable CodeReuse/ActiveRecord def branch_name @branch ||= @branch_name || issue.to_branch_name diff --git a/app/services/merge_requests/create_service.rb b/app/services/merge_requests/create_service.rb index c36a2ecbfe3..6081a7d1de0 100644 --- a/app/services/merge_requests/create_service.rb +++ b/app/services/merge_requests/create_service.rb @@ -49,6 +49,7 @@ module MergeRequests merge_request.update(head_pipeline_id: pipeline.id) if pipeline end + # rubocop: disable CodeReuse/ActiveRecord def head_pipeline_for(merge_request) return unless merge_request.source_project @@ -59,6 +60,7 @@ module MergeRequests pipelines.order(id: :desc).first end + # rubocop: enable CodeReuse/ActiveRecord def set_projects! # @project is used to determine whether the user can set the merge request's diff --git a/app/services/merge_requests/delete_non_latest_diffs_service.rb b/app/services/merge_requests/delete_non_latest_diffs_service.rb index 2a8ea316921..d5929446122 100644 --- a/app/services/merge_requests/delete_non_latest_diffs_service.rb +++ b/app/services/merge_requests/delete_non_latest_diffs_service.rb @@ -8,6 +8,7 @@ module MergeRequests @merge_request = merge_request end + # rubocop: disable CodeReuse/ActiveRecord def execute diffs = @merge_request.non_latest_diffs.with_files @@ -16,5 +17,6 @@ module MergeRequests DeleteDiffFilesWorker.bulk_perform_in(index * 5.minutes, ids) end end + # rubocop: enable CodeReuse/ActiveRecord end end diff --git a/app/services/merge_requests/refresh_service.rb b/app/services/merge_requests/refresh_service.rb index 48da796505f..bcdd752ddc4 100644 --- a/app/services/merge_requests/refresh_service.rb +++ b/app/services/merge_requests/refresh_service.rb @@ -51,6 +51,7 @@ module MergeRequests # and close if push to master include last commit from merge request # We need this to close(as merged) merge requests that were merged into # target branch manually + # rubocop: disable CodeReuse/ActiveRecord def post_merge_manually_merged commit_ids = @commits.map(&:id) merge_requests = @project.merge_requests.preload(:latest_merge_request_diff).opened.where(target_branch: @branch_name).to_a @@ -67,6 +68,7 @@ module MergeRequests .execute(merge_request) end end + # rubocop: enable CodeReuse/ActiveRecord def force_push? Gitlab::Checks::ForcePush.force_push?(@project, @oldrev, @newrev) @@ -74,6 +76,7 @@ module MergeRequests # Refresh merge request diff if we push to source or target branch of merge request # Note: we should update merge requests from forks too + # rubocop: disable CodeReuse/ActiveRecord def reload_merge_requests merge_requests = @project.merge_requests.opened .by_source_or_target_branch(@branch_name).to_a @@ -101,6 +104,7 @@ module MergeRequests # @source_merge_requests diffs (for MergeRequest#commit_shas for instance). merge_requests_for_source_branch(reload: true) end + # rubocop: enable CodeReuse/ActiveRecord def reset_merge_when_pipeline_succeeds merge_requests_for_source_branch.each(&:reset_merge_when_pipeline_succeeds) @@ -197,11 +201,13 @@ module MergeRequests # If the merge requests closes any issues, save this information in the # `MergeRequestsClosingIssues` model (as a performance optimization). + # rubocop: disable CodeReuse/ActiveRecord def cache_merge_requests_closing_issues @project.merge_requests.where(source_branch: @branch_name).each do |merge_request| merge_request.cache_merge_request_closes_issues!(@current_user) end end + # rubocop: enable CodeReuse/ActiveRecord def filter_merge_requests(merge_requests) merge_requests.uniq.select(&:source_project) diff --git a/app/services/merge_requests/reload_diffs_service.rb b/app/services/merge_requests/reload_diffs_service.rb index 1390ae0e199..c350b14d12b 100644 --- a/app/services/merge_requests/reload_diffs_service.rb +++ b/app/services/merge_requests/reload_diffs_service.rb @@ -27,6 +27,7 @@ module MergeRequests current_user: current_user) end + # rubocop: disable CodeReuse/ActiveRecord def clear_cache(new_diff) # Executing the iteration we cache highlighted diffs for each diff file of # MergeRequestDiff. @@ -41,5 +42,6 @@ module MergeRequests merge_request_diff.diffs_collection.clear_cache end end + # rubocop: enable CodeReuse/ActiveRecord end end diff --git a/app/services/milestones/promote_service.rb b/app/services/milestones/promote_service.rb index 660b4faaec0..39071b5dc14 100644 --- a/app/services/milestones/promote_service.rb +++ b/app/services/milestones/promote_service.rb @@ -26,6 +26,7 @@ module Milestones private + # rubocop: disable CodeReuse/ActiveRecord def milestone_ids_for_merge(group_milestone) # Pluck need to be used here instead of select so the array of ids # is persistent after old milestones gets deleted. @@ -35,6 +36,7 @@ module Milestones milestones.pluck(:id) end end + # rubocop: enable CodeReuse/ActiveRecord def move_children_to_group_milestone(group_milestone) milestone_ids_for_merge(group_milestone).in_groups_of(100, false) do |milestone_ids| @@ -59,6 +61,7 @@ module Milestones milestone end + # rubocop: disable CodeReuse/ActiveRecord def update_children(group_milestone, milestone_ids) issues = Issue.where(project_id: group_project_ids, milestone_id: milestone_ids) merge_requests = MergeRequest.where(source_project_id: group_project_ids, milestone_id: milestone_ids) @@ -67,18 +70,23 @@ module Milestones issuable_collection.update_all(milestone_id: group_milestone.id) end end + # rubocop: enable CodeReuse/ActiveRecord def group @group ||= parent.group || raise_error('Project does not belong to a group.') end + # rubocop: disable CodeReuse/ActiveRecord def destroy_old_milestones(milestone) Milestone.where(id: milestone_ids_for_merge(milestone)).destroy_all # rubocop: disable DestroyAll end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def group_project_ids @group_project_ids ||= group.projects.pluck(:id) end + # rubocop: enable CodeReuse/ActiveRecord def raise_error(message) raise PromoteMilestoneError, "Promotion failed - #{message}" diff --git a/app/services/milestones/update_service.rb b/app/services/milestones/update_service.rb index 81b20943bab..01ab8b37bac 100644 --- a/app/services/milestones/update_service.rb +++ b/app/services/milestones/update_service.rb @@ -2,6 +2,7 @@ module Milestones class UpdateService < Milestones::BaseService + # rubocop: disable CodeReuse/ActiveRecord def execute(milestone) state = params[:state_event] @@ -18,5 +19,6 @@ module Milestones milestone end + # rubocop: enable CodeReuse/ActiveRecord end end diff --git a/app/services/notification_recipient_service.rb b/app/services/notification_recipient_service.rb index 5c0e8a35cb0..9c236d7f41d 100644 --- a/app/services/notification_recipient_service.rb +++ b/app/services/notification_recipient_service.rb @@ -58,6 +58,7 @@ module NotificationRecipientService @recipients ||= [] end + # rubocop: disable CodeReuse/ActiveRecord def add_recipients(users, type, reason) if users.is_a?(ActiveRecord::Relation) users = users.includes(:notification_settings) @@ -66,10 +67,13 @@ module NotificationRecipientService users = Array(users).compact recipients.concat(users.map { |u| make_recipient(u, type, reason) }) end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def user_scope User.includes(:notification_settings) end + # rubocop: enable CodeReuse/ActiveRecord def make_recipient(user, type, reason) NotificationRecipient.new( @@ -112,6 +116,7 @@ module NotificationRecipientService end # Get project/group users with CUSTOM notification level + # rubocop: disable CodeReuse/ActiveRecord def add_custom_notifications user_ids = [] @@ -128,6 +133,7 @@ module NotificationRecipientService add_recipients(user_scope.where(id: user_ids), :watch, nil) end + # rubocop: enable CodeReuse/ActiveRecord def add_project_watchers add_recipients(project_watchers, :watch, nil) if project @@ -138,6 +144,7 @@ module NotificationRecipientService end # Get project users with WATCH notification level + # rubocop: disable CodeReuse/ActiveRecord def project_watchers project_members_ids = user_ids_notifiable_on(project) @@ -151,7 +158,9 @@ module NotificationRecipientService user_scope.where(id: user_ids_with_project_setting.concat(user_ids_with_group_setting).uniq) end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def group_watchers user_ids_with_group_global = user_ids_notifiable_on(group, :global) user_ids = user_ids_with_global_level_watch(user_ids_with_group_global) @@ -159,6 +168,7 @@ module NotificationRecipientService user_scope.where(id: user_ids_with_group_setting) end + # rubocop: enable CodeReuse/ActiveRecord def add_subscribed_users return unless target.respond_to? :subscribers @@ -166,6 +176,7 @@ module NotificationRecipientService add_recipients(target.subscribers(project), :subscription, nil) end + # rubocop: disable CodeReuse/ActiveRecord def user_ids_notifiable_on(resource, notification_level = nil) return [] unless resource @@ -177,6 +188,7 @@ module NotificationRecipientService scope.pluck(:user_id) end + # rubocop: enable CodeReuse/ActiveRecord # Build a list of user_ids based on project notification settings def select_project_members_ids(global_setting, user_ids_global_level_watch) @@ -194,14 +206,19 @@ module NotificationRecipientService uids + (global_setting & user_ids_global_level_watch) - project_members end + # rubocop: disable CodeReuse/ActiveRecord def user_ids_with_global_level_watch(ids) settings_with_global_level_of(:watch, ids).pluck(:user_id) end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def user_ids_with_global_level_custom(ids, action) settings_with_global_level_of(:custom, ids).pluck(:user_id) end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def settings_with_global_level_of(level, ids) NotificationSetting.where( user_id: ids, @@ -209,6 +226,7 @@ module NotificationRecipientService level: NotificationSetting.levels[level] ) end + # rubocop: enable CodeReuse/ActiveRecord def add_labels_subscribers(labels: nil) return unless target.respond_to? :labels diff --git a/app/services/projects/auto_devops/disable_service.rb b/app/services/projects/auto_devops/disable_service.rb index 9745ab67dbd..1b578a3c5ce 100644 --- a/app/services/projects/auto_devops/disable_service.rb +++ b/app/services/projects/auto_devops/disable_service.rb @@ -21,10 +21,12 @@ module Projects # is an expensive operation. See # https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/21172#note_99037378 # for more context. + # rubocop: disable CodeReuse/ActiveRecord def first_pipeline_failure? auto_devops_pipelines.success.limit(1).count.zero? && auto_devops_pipelines.failed.limit(1).count.nonzero? end + # rubocop: enable CodeReuse/ActiveRecord def disable_auto_devops project.auto_devops_attributes = { enabled: false } diff --git a/app/services/projects/base_move_relations_service.rb b/app/services/projects/base_move_relations_service.rb index 78cc2869b72..24dec1f3a45 100644 --- a/app/services/projects/base_move_relations_service.rb +++ b/app/services/projects/base_move_relations_service.rb @@ -13,6 +13,7 @@ module Projects private + # rubocop: disable CodeReuse/ActiveRecord def prepare_relation(relation, id_param = :id) if Gitlab::Database.postgresql? relation @@ -20,5 +21,6 @@ module Projects relation.model.where("#{id_param}": relation.pluck(id_param)) end end + # rubocop: enable CodeReuse/ActiveRecord end end diff --git a/app/services/projects/batch_forks_count_service.rb b/app/services/projects/batch_forks_count_service.rb index 9bf369df999..6467744a435 100644 --- a/app/services/projects/batch_forks_count_service.rb +++ b/app/services/projects/batch_forks_count_service.rb @@ -5,6 +5,7 @@ # because the service use maps to retrieve the project ids module Projects class BatchForksCountService < Projects::BatchCountService + # rubocop: disable CodeReuse/ActiveRecord def global_count @global_count ||= begin count_service.query(project_ids) @@ -12,6 +13,7 @@ module Projects .count end end + # rubocop: enable CodeReuse/ActiveRecord def count_service ::Projects::ForksCountService diff --git a/app/services/projects/batch_open_issues_count_service.rb b/app/services/projects/batch_open_issues_count_service.rb index d375fcf9dbd..d6ff2291af8 100644 --- a/app/services/projects/batch_open_issues_count_service.rb +++ b/app/services/projects/batch_open_issues_count_service.rb @@ -5,11 +5,13 @@ # because the service use maps to retrieve the project ids module Projects class BatchOpenIssuesCountService < Projects::BatchCountService + # rubocop: disable CodeReuse/ActiveRecord def global_count @global_count ||= begin count_service.query(project_ids).group(:project_id).count end end + # rubocop: enable CodeReuse/ActiveRecord def count_service ::Projects::OpenIssuesCountService diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb index 02a3a3eb096..0e6a7e8da54 100644 --- a/app/services/projects/create_service.rb +++ b/app/services/projects/create_service.rb @@ -79,17 +79,21 @@ module Projects @project.errors.add(:namespace, "is not valid") end + # rubocop: disable CodeReuse/ActiveRecord def allowed_fork?(source_project_id) return true if source_project_id.nil? source_project = Project.find_by(id: source_project_id) current_user.can?(:fork_project, source_project) end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def allowed_namespace?(user, namespace_id) namespace = Namespace.find_by(id: namespace_id) current_user.can?(:create_projects, namespace) end + # rubocop: enable CodeReuse/ActiveRecord def after_create_actions log_info("#{@project.owner.name} created a new project \"#{@project.full_name}\"") @@ -167,12 +171,14 @@ module Projects @project end + # rubocop: disable CodeReuse/ActiveRecord def create_services_from_active_templates(project) Service.where(template: true, active: true).each do |template| service = Service.build_from_template(project.id, template) service.save! end end + # rubocop: enable CodeReuse/ActiveRecord def set_project_name_from_path # Set project name from path diff --git a/app/services/projects/destroy_service.rb b/app/services/projects/destroy_service.rb index 01de6afcd8e..5090ebf8f51 100644 --- a/app/services/projects/destroy_service.rb +++ b/app/services/projects/destroy_service.rb @@ -107,15 +107,19 @@ module Projects mv_repository(old_path, new_path) end + # rubocop: disable CodeReuse/ActiveRecord def repo_exists?(path) gitlab_shell.exists?(project.repository_storage, path + '.git') end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def mv_repository(from_path, to_path) return true unless gitlab_shell.exists?(project.repository_storage, from_path + '.git') gitlab_shell.mv_repository(project.repository_storage, from_path, to_path) end + # rubocop: enable CodeReuse/ActiveRecord def attempt_rollback(project, message) return unless project diff --git a/app/services/projects/detect_repository_languages_service.rb b/app/services/projects/detect_repository_languages_service.rb index 3488b9ce47e..4a837a4fb6a 100644 --- a/app/services/projects/detect_repository_languages_service.rb +++ b/app/services/projects/detect_repository_languages_service.rb @@ -4,6 +4,7 @@ module Projects class DetectRepositoryLanguagesService < BaseService attr_reader :detected_repository_languages, :programming_languages + # rubocop: disable CodeReuse/ActiveRecord def execute repository_languages = project.repository_languages detection = Gitlab::LanguageDetection.new(repository, repository_languages) @@ -28,9 +29,11 @@ module Projects project.repository_languages.reload end + # rubocop: enable CodeReuse/ActiveRecord private + # rubocop: disable CodeReuse/ActiveRecord def ensure_programming_languages(detection) existing_languages = ProgrammingLanguage.where(name: detection.languages) return existing_languages if detection.languages.size == existing_languages.size @@ -42,7 +45,9 @@ module Projects existing_languages + created_languages end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def create_language(name, color) ProgrammingLanguage.transaction do ProgrammingLanguage.where(name: name).first_or_create(color: color) @@ -50,5 +55,6 @@ module Projects rescue ActiveRecord::RecordNotUnique retry end + # rubocop: enable CodeReuse/ActiveRecord end end diff --git a/app/services/projects/enable_deploy_key_service.rb b/app/services/projects/enable_deploy_key_service.rb index b7c172028e9..102088e9557 100644 --- a/app/services/projects/enable_deploy_key_service.rb +++ b/app/services/projects/enable_deploy_key_service.rb @@ -2,6 +2,7 @@ module Projects class EnableDeployKeyService < BaseService + # rubocop: disable CodeReuse/ActiveRecord def execute key = accessible_keys.find_by(id: params[:key_id] || params[:id]) return unless key @@ -12,6 +13,7 @@ module Projects key end + # rubocop: enable CodeReuse/ActiveRecord private diff --git a/app/services/projects/forks_count_service.rb b/app/services/projects/forks_count_service.rb index b570c6d4754..00e73148358 100644 --- a/app/services/projects/forks_count_service.rb +++ b/app/services/projects/forks_count_service.rb @@ -7,11 +7,13 @@ module Projects 'forks_count' end + # rubocop: disable CodeReuse/ActiveRecord def self.query(project_ids) # We can't directly change ForkedProjectLink to ForkNetworkMember here # Nowadays, when a call using v3 to projects/:id/fork is made, # the relationship to ForkNetworkMember is not updated ForkedProjectLink.where(forked_from_project: project_ids) end + # rubocop: enable CodeReuse/ActiveRecord end end diff --git a/app/services/projects/gitlab_projects_import_service.rb b/app/services/projects/gitlab_projects_import_service.rb index 044afa1d5e1..a315adf42f0 100644 --- a/app/services/projects/gitlab_projects_import_service.rb +++ b/app/services/projects/gitlab_projects_import_service.rb @@ -32,11 +32,13 @@ module Projects Project.find_by_full_path("#{current_namespace.full_path}/#{params[:path]}").present? end + # rubocop: disable CodeReuse/ActiveRecord def current_namespace strong_memoize(:current_namespace) do Namespace.find_by(id: params[:namespace_id]) end end + # rubocop: enable CodeReuse/ActiveRecord def overwrite? strong_memoize(:overwrite) do diff --git a/app/services/projects/hashed_storage/migrate_repository_service.rb b/app/services/projects/hashed_storage/migrate_repository_service.rb index 641d46e6591..4462d504071 100644 --- a/app/services/projects/hashed_storage/migrate_repository_service.rb +++ b/app/services/projects/hashed_storage/migrate_repository_service.rb @@ -47,10 +47,13 @@ module Projects private + # rubocop: disable CodeReuse/ActiveRecord def has_wiki? gitlab_shell.exists?(project.repository_storage, "#{old_wiki_disk_path}.git") end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def move_repository(from_name, to_name) from_exists = gitlab_shell.exists?(project.repository_storage, "#{from_name}.git") to_exists = gitlab_shell.exists?(project.repository_storage, "#{to_name}.git") @@ -67,6 +70,7 @@ module Projects gitlab_shell.mv_repository(project.repository_storage, from_name, to_name) end + # rubocop: enable CodeReuse/ActiveRecord def rollback_folder_move move_repository(new_disk_path, old_disk_path) diff --git a/app/services/projects/lfs_pointers/lfs_download_service.rb b/app/services/projects/lfs_pointers/lfs_download_service.rb index 7d4fa4e08df..1c4a8d05be6 100644 --- a/app/services/projects/lfs_pointers/lfs_download_service.rb +++ b/app/services/projects/lfs_pointers/lfs_download_service.rb @@ -4,6 +4,7 @@ module Projects module LfsPointers class LfsDownloadService < BaseService + # rubocop: disable CodeReuse/ActiveRecord def execute(oid, url) return unless project&.lfs_enabled? && oid.present? && url.present? @@ -20,6 +21,7 @@ module Projects rescue StandardError => e Rails.logger.error("LFS file with oid #{oid} could't be downloaded from #{sanitized_uri.sanitized_url}: #{e.message}") end + # rubocop: enable CodeReuse/ActiveRecord private diff --git a/app/services/projects/lfs_pointers/lfs_import_service.rb b/app/services/projects/lfs_pointers/lfs_import_service.rb index 97ce681a911..9215fa0a7bf 100644 --- a/app/services/projects/lfs_pointers/lfs_import_service.rb +++ b/app/services/projects/lfs_pointers/lfs_import_service.rb @@ -41,6 +41,7 @@ module Projects project.update(lfs_enabled: false) end + # rubocop: disable CodeReuse/ActiveRecord def get_download_links existent_lfs = LfsListService.new(project).execute linked_oids = LfsLinkService.new(project).execute(existent_lfs.keys) @@ -50,6 +51,7 @@ module Projects LfsDownloadLinkListService.new(project, remote_uri: current_endpoint_uri).execute(not_linked_lfs) end + # rubocop: enable CodeReuse/ActiveRecord def lfsconfig_endpoint_uri strong_memoize(:lfsconfig_endpoint_uri) do diff --git a/app/services/projects/lfs_pointers/lfs_link_service.rb b/app/services/projects/lfs_pointers/lfs_link_service.rb index a2eba8e124e..8401f3d1d89 100644 --- a/app/services/projects/lfs_pointers/lfs_link_service.rb +++ b/app/services/projects/lfs_pointers/lfs_link_service.rb @@ -16,6 +16,7 @@ module Projects private + # rubocop: disable CodeReuse/ActiveRecord def link_existing_lfs_objects(oids) existent_lfs_objects = LfsObject.where(oid: oids) @@ -26,6 +27,7 @@ module Projects existent_lfs_objects.pluck(:oid) end + # rubocop: enable CodeReuse/ActiveRecord end end end diff --git a/app/services/projects/move_deploy_keys_projects_service.rb b/app/services/projects/move_deploy_keys_projects_service.rb index 9f3f44f30ea..b6a3af8c7b8 100644 --- a/app/services/projects/move_deploy_keys_projects_service.rb +++ b/app/services/projects/move_deploy_keys_projects_service.rb @@ -20,11 +20,13 @@ module Projects .update_all(project_id: @project.id) end + # rubocop: disable CodeReuse/ActiveRecord def non_existent_deploy_keys_projects source_project.deploy_keys_projects .joins(:deploy_key) .where.not(keys: { fingerprint: @project.deploy_keys.select(:fingerprint) }) end + # rubocop: enable CodeReuse/ActiveRecord def remove_remaining_deploy_keys_projects source_project.deploy_keys_projects.destroy_all # rubocop: disable DestroyAll diff --git a/app/services/projects/move_forks_service.rb b/app/services/projects/move_forks_service.rb index 076a7a50aa9..2948555a17c 100644 --- a/app/services/projects/move_forks_service.rb +++ b/app/services/projects/move_forks_service.rb @@ -17,6 +17,7 @@ module Projects private + # rubocop: disable CodeReuse/ActiveRecord def move_forked_project_links # Update ancestor ForkedProjectLink.where(forked_to_project: source_project) @@ -26,16 +27,21 @@ module Projects ForkedProjectLink.where(forked_from_project: source_project) .update_all(forked_from_project_id: @project.id) end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def move_fork_network_members ForkNetworkMember.where(project: source_project).update_all(project_id: @project.id) ForkNetworkMember.where(forked_from_project: source_project).update_all(forked_from_project_id: @project.id) end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def update_root_project # Update root network project ForkNetwork.where(root_project: source_project).update_all(root_project_id: @project.id) end + # rubocop: enable CodeReuse/ActiveRecord def refresh_forks_count Projects::ForksCountService.new(@project).refresh_cache diff --git a/app/services/projects/move_lfs_objects_projects_service.rb b/app/services/projects/move_lfs_objects_projects_service.rb index f78546a1e9c..308a54ad06e 100644 --- a/app/services/projects/move_lfs_objects_projects_service.rb +++ b/app/services/projects/move_lfs_objects_projects_service.rb @@ -24,8 +24,10 @@ module Projects source_project.lfs_objects_projects.destroy_all # rubocop: disable DestroyAll end + # rubocop: disable CodeReuse/ActiveRecord def non_existent_lfs_objects_projects source_project.lfs_objects_projects.where.not(lfs_object: @project.lfs_objects) end + # rubocop: enable CodeReuse/ActiveRecord end end diff --git a/app/services/projects/move_notification_settings_service.rb b/app/services/projects/move_notification_settings_service.rb index 109a00dd6d9..e740c44bd26 100644 --- a/app/services/projects/move_notification_settings_service.rb +++ b/app/services/projects/move_notification_settings_service.rb @@ -31,10 +31,12 @@ module Projects end # Look for notification_settings in source_project that are not in the target project + # rubocop: disable CodeReuse/ActiveRecord def non_existent_notifications source_project.notification_settings .select(:id) .where.not(user_id: users_in_target_project) end + # rubocop: enable CodeReuse/ActiveRecord end end diff --git a/app/services/projects/move_project_authorizations_service.rb b/app/services/projects/move_project_authorizations_service.rb index 60f2af88e99..2060a263751 100644 --- a/app/services/projects/move_project_authorizations_service.rb +++ b/app/services/projects/move_project_authorizations_service.rb @@ -33,10 +33,12 @@ module Projects end # Look for authorizations in source_project that are not in the target project + # rubocop: disable CodeReuse/ActiveRecord def non_existent_authorization source_project.project_authorizations .select(:user_id) .where.not(user: @project.authorized_users) end + # rubocop: enable CodeReuse/ActiveRecord end end diff --git a/app/services/projects/move_project_group_links_service.rb b/app/services/projects/move_project_group_links_service.rb index 1efafdce36d..fb395ecb9a1 100644 --- a/app/services/projects/move_project_group_links_service.rb +++ b/app/services/projects/move_project_group_links_service.rb @@ -34,9 +34,11 @@ module Projects end # Look for groups in source_project that are not in the target project + # rubocop: disable CodeReuse/ActiveRecord def non_existent_group_links source_project.project_group_links .where.not(group_id: group_links_in_target_project) end + # rubocop: enable CodeReuse/ActiveRecord end end diff --git a/app/services/projects/move_project_members_service.rb b/app/services/projects/move_project_members_service.rb index ec983582d94..f28f44adc03 100644 --- a/app/services/projects/move_project_members_service.rb +++ b/app/services/projects/move_project_members_service.rb @@ -33,10 +33,12 @@ module Projects end # Look for members in source_project that are not in the target project + # rubocop: disable CodeReuse/ActiveRecord def non_existent_members source_project.members .select(:id) .where.not(user_id: @project.project_members.select(:user_id)) end + # rubocop: enable CodeReuse/ActiveRecord end end diff --git a/app/services/projects/open_issues_count_service.rb b/app/services/projects/open_issues_count_service.rb index 5d6620c3c54..ee9884e9042 100644 --- a/app/services/projects/open_issues_count_service.rb +++ b/app/services/projects/open_issues_count_service.rb @@ -42,6 +42,7 @@ module Projects cache_key(TOTAL_COUNT_KEY) end + # rubocop: disable CodeReuse/ActiveRecord def refresh_cache(&block) if block_given? super(&block) @@ -59,11 +60,13 @@ module Projects end end end + # rubocop: enable CodeReuse/ActiveRecord # We only show total issues count for reporters # which are allowed to view confidential issues # This will still show a discrepancy on issues number but should be less than before. # Check https://gitlab.com/gitlab-org/gitlab-ce/issues/38418 description. + # rubocop: disable CodeReuse/ActiveRecord def self.query(projects, public_only: true) if public_only Issue.opened.public_only.where(project: projects) @@ -71,5 +74,6 @@ module Projects Issue.opened.where(project: projects) end end + # rubocop: enable CodeReuse/ActiveRecord end end diff --git a/app/services/projects/propagate_service_template.rb b/app/services/projects/propagate_service_template.rb index fdfa91801ab..633a263af7b 100644 --- a/app/services/projects/propagate_service_template.rb +++ b/app/services/projects/propagate_service_template.rb @@ -70,6 +70,7 @@ module Projects ) end + # rubocop: disable CodeReuse/ActiveRecord def service_hash @service_hash ||= begin @@ -83,7 +84,9 @@ module Projects end end end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def run_callbacks(batch) if active_external_issue_tracker? Project.where(id: batch).update_all(has_external_issue_tracker: true) @@ -93,6 +96,7 @@ module Projects Project.where(id: batch).update_all(has_external_wiki: true) end end + # rubocop: enable CodeReuse/ActiveRecord def active_external_issue_tracker? @template.issue_tracker? && !@template.default diff --git a/app/services/projects/transfer_service.rb b/app/services/projects/transfer_service.rb index 3746cfef702..9d40ab166ff 100644 --- a/app/services/projects/transfer_service.rb +++ b/app/services/projects/transfer_service.rb @@ -37,6 +37,7 @@ module Projects private + # rubocop: disable CodeReuse/ActiveRecord def transfer(project) @old_path = project.full_path @old_group = project.group @@ -54,6 +55,7 @@ module Projects attempt_transfer_transaction end + # rubocop: enable CodeReuse/ActiveRecord def attempt_transfer_transaction Project.transaction do diff --git a/app/services/projects/unlink_fork_service.rb b/app/services/projects/unlink_fork_service.rb index 2c0d91fe34f..a8b7c7f136a 100644 --- a/app/services/projects/unlink_fork_service.rb +++ b/app/services/projects/unlink_fork_service.rb @@ -2,6 +2,7 @@ module Projects class UnlinkForkService < BaseService + # rubocop: disable CodeReuse/ActiveRecord def execute return unless @project.forked? @@ -26,6 +27,7 @@ module Projects @project.fork_network_member.destroy @project.forked_project_link.destroy end + # rubocop: enable CodeReuse/ActiveRecord def refresh_forks_count(project) Projects::ForksCountService.new(project).refresh_cache diff --git a/app/services/projects/update_service.rb b/app/services/projects/update_service.rb index e390d7a04c3..d6d9bacf232 100644 --- a/app/services/projects/update_service.rb +++ b/app/services/projects/update_service.rb @@ -6,6 +6,7 @@ module Projects ValidationError = Class.new(StandardError) + # rubocop: disable CodeReuse/ActiveRecord def execute validate! @@ -26,6 +27,7 @@ module Projects rescue ValidationError => e error(e.message) end + # rubocop: enable CodeReuse/ActiveRecord def run_auto_devops_pipeline? return false if project.repository.gitlab_ci_yml || !project.auto_devops&.previous_changes&.include?('enabled') diff --git a/app/services/quick_actions/interpret_service.rb b/app/services/quick_actions/interpret_service.rb index be9d1e48435..02d68c3add3 100644 --- a/app/services/quick_actions/interpret_service.rb +++ b/app/services/quick_actions/interpret_service.rb @@ -111,10 +111,12 @@ module QuickActions end desc 'Assign' + # rubocop: disable CodeReuse/ActiveRecord explanation do |users| users = issuable.allows_multiple_assignees? ? users : users.take(1) "Assigns #{users.map(&:to_reference).to_sentence}." end + # rubocop: enable CodeReuse/ActiveRecord params do issuable.allows_multiple_assignees? ? '@user1 @user2' : '@user' end @@ -124,6 +126,7 @@ module QuickActions parse_params do |assignee_param| extract_users(assignee_param) end + # rubocop: disable CodeReuse/ActiveRecord command :assign do |users| next if users.empty? @@ -134,6 +137,7 @@ module QuickActions [users.first.id] end end + # rubocop: enable CodeReuse/ActiveRecord desc do if issuable.allows_multiple_assignees? @@ -160,6 +164,7 @@ module QuickActions # When multiple users are assigned, all will be unassigned if multiple assignees are no longer allowed extract_users(unassign_param) if issuable.allows_multiple_assignees? end + # rubocop: disable CodeReuse/ActiveRecord command :unassign do |users = nil| @updates[:assignee_ids] = if users&.any? @@ -168,6 +173,7 @@ module QuickActions [] end end + # rubocop: enable CodeReuse/ActiveRecord desc 'Set milestone' explanation do |milestone| @@ -546,6 +552,7 @@ module QuickActions current_user.can?(:"update_#{issuable.to_ability_name}", issuable) && issuable.project.boards.count == 1 end + # rubocop: disable CodeReuse/ActiveRecord command :board_move do |target_list_name| label_ids = find_label_ids(target_list_name) @@ -560,6 +567,7 @@ module QuickActions @updates[:add_label_ids] = [label_id] end end + # rubocop: enable CodeReuse/ActiveRecord desc 'Mark this issue as a duplicate of another issue' explanation do |duplicate_reference| @@ -625,6 +633,7 @@ module QuickActions @updates[:tag_message] = message end + # rubocop: disable CodeReuse/ActiveRecord def extract_users(params) return [] if params.nil? @@ -641,6 +650,7 @@ module QuickActions users end + # rubocop: enable CodeReuse/ActiveRecord def find_milestones(project, params = {}) MilestonesFinder.new(params.merge(project_ids: [project.id], group_ids: [project.group&.id])).execute @@ -677,6 +687,7 @@ module QuickActions end end + # rubocop: disable CodeReuse/ActiveRecord def extract_references(arg, type) ext = Gitlab::ReferenceExtractor.new(project, current_user) @@ -684,5 +695,6 @@ module QuickActions ext.references(type) end + # rubocop: enable CodeReuse/ActiveRecord end end diff --git a/app/services/quick_actions/target_service.rb b/app/services/quick_actions/target_service.rb index d8ba52c6e50..69464c3c1ae 100644 --- a/app/services/quick_actions/target_service.rb +++ b/app/services/quick_actions/target_service.rb @@ -15,13 +15,17 @@ module QuickActions private + # rubocop: disable CodeReuse/ActiveRecord def issue(type_id) IssuesFinder.new(current_user, project_id: project.id).find_by(iid: type_id) || project.issues.build end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def merge_request(type_id) MergeRequestsFinder.new(current_user, project_id: project.id).find_by(iid: type_id) || project.merge_requests.build end + # rubocop: enable CodeReuse/ActiveRecord def commit(type_id) project.commit(type_id) diff --git a/app/services/resource_events/merge_into_notes_service.rb b/app/services/resource_events/merge_into_notes_service.rb index 1b02a1602e2..596c0105ea0 100644 --- a/app/services/resource_events/merge_into_notes_service.rb +++ b/app/services/resource_events/merge_into_notes_service.rb @@ -30,6 +30,7 @@ module ResourceEvents end end + # rubocop: disable CodeReuse/ActiveRecord def label_events_by_discussion_id return [] unless resource.respond_to?(:resource_label_events) @@ -38,6 +39,7 @@ module ResourceEvents events.group_by { |event| event.discussion_id } end + # rubocop: enable CodeReuse/ActiveRecord def since_fetch_at(events) return events unless params[:last_fetched_at].present? diff --git a/app/services/search/group_service.rb b/app/services/search/group_service.rb index 34803d005e3..00372887985 100644 --- a/app/services/search/group_service.rb +++ b/app/services/search/group_service.rb @@ -11,11 +11,13 @@ module Search @group = group end + # rubocop: disable CodeReuse/ActiveRecord def projects return Project.none unless group return @projects if defined? @projects @projects = super.inside_path(group.full_path) end + # rubocop: enable CodeReuse/ActiveRecord end end diff --git a/app/services/search_service.rb b/app/services/search_service.rb index 1b707d79b43..e0cbfac2420 100644 --- a/app/services/search_service.rb +++ b/app/services/search_service.rb @@ -8,6 +8,7 @@ class SearchService @params = params.dup end + # rubocop: disable CodeReuse/ActiveRecord def project return @project if defined?(@project) @@ -19,7 +20,9 @@ class SearchService nil end end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def group return @group if defined?(@group) @@ -31,6 +34,7 @@ class SearchService nil end end + # rubocop: enable CodeReuse/ActiveRecord def show_snippets? return @show_snippets if defined?(@show_snippets) diff --git a/app/services/spam_check_service.rb b/app/services/spam_check_service.rb index 895261925ba..51d300d4f1d 100644 --- a/app/services/spam_check_service.rb +++ b/app/services/spam_check_service.rb @@ -22,6 +22,7 @@ module SpamCheckService # a dirty instance, which means it should be already assigned with the new # attribute values. # rubocop:disable Gitlab/ModuleWithInstanceVariables + # rubocop: disable CodeReuse/ActiveRecord def spam_check(spammable, user) spam_service = SpamService.new(spammable, @request) @@ -29,5 +30,6 @@ module SpamCheckService user.spam_logs.find_by(id: @spam_log_id)&.update!(recaptcha_verified: true) end end + # rubocop: enable CodeReuse/ActiveRecord # rubocop:enable Gitlab/ModuleWithInstanceVariables end diff --git a/app/services/system_note_service.rb b/app/services/system_note_service.rb index c5d05992575..575678da1fa 100644 --- a/app/services/system_note_service.rb +++ b/app/services/system_note_service.rb @@ -580,6 +580,7 @@ module SystemNoteService private + # rubocop: disable CodeReuse/ActiveRecord def notes_for_mentioner(mentioner, noteable, notes) if mentioner.is_a?(Commit) text = "#{cross_reference_note_prefix}%#{mentioner.to_reference(nil)}" @@ -590,6 +591,7 @@ module SystemNoteService notes.where(note: [text, text.capitalize]) end end + # rubocop: enable CodeReuse/ActiveRecord def create_note(note_summary) note = Note.create(note_summary.note.merge(system: true)) diff --git a/app/services/tags/destroy_service.rb b/app/services/tags/destroy_service.rb index 800268485a4..6bfef09ac54 100644 --- a/app/services/tags/destroy_service.rb +++ b/app/services/tags/destroy_service.rb @@ -2,6 +2,7 @@ module Tags class DestroyService < BaseService + # rubocop: disable CodeReuse/ActiveRecord def execute(tag_name) repository = project.repository tag = repository.find_tag(tag_name) @@ -26,6 +27,7 @@ module Tags rescue Gitlab::Git::PreReceiveError => ex error(ex.message) end + # rubocop: enable CodeReuse/ActiveRecord def error(message, return_code = 400) super(message).merge(return_code: return_code) diff --git a/app/services/todo_service.rb b/app/services/todo_service.rb index 0df61ad3bce..4fe6c1ec986 100644 --- a/app/services/todo_service.rb +++ b/app/services/todo_service.rb @@ -41,6 +41,7 @@ class TodoService # collects the todo users before the todos themselves are deleted, then # updates the todo counts for those users. # + # rubocop: disable CodeReuse/ActiveRecord def destroy_target(target) todo_users = User.where(id: target.todos.pending.select(:user_id)).to_a @@ -48,6 +49,7 @@ class TodoService todo_users.each(&:update_todos_count_cache) end + # rubocop: enable CodeReuse/ActiveRecord # When we reassign an issue we should: # @@ -198,16 +200,21 @@ class TodoService create_todos(current_user, attributes) end + # rubocop: disable CodeReuse/ActiveRecord def todo_exist?(issuable, current_user) TodosFinder.new(current_user).execute.exists?(target: issuable) end + # rubocop: enable CodeReuse/ActiveRecord private + # rubocop: disable CodeReuse/ActiveRecord def todos_by_ids(ids, current_user) current_user.todos.where(id: Array(ids)) end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def update_todos_state(todos, current_user, state) # Only update those that are not really on that state todos = todos.where.not(state: state) @@ -216,6 +223,7 @@ class TodoService current_user.update_todos_count_cache todos_ids end + # rubocop: enable CodeReuse/ActiveRecord def create_todos(users, attributes) Array(users).map do |user| @@ -340,8 +348,10 @@ class TodoService end end + # rubocop: disable CodeReuse/ActiveRecord def pending_todos(user, criteria = {}) valid_keys = [:project_id, :target_id, :target_type, :commit_id] user.todos.pending.where(criteria.slice(*valid_keys)) end + # rubocop: enable CodeReuse/ActiveRecord end diff --git a/app/services/todos/destroy/base_service.rb b/app/services/todos/destroy/base_service.rb index aeb60e50c64..f3f1dbb5698 100644 --- a/app/services/todos/destroy/base_service.rb +++ b/app/services/todos/destroy/base_service.rb @@ -11,13 +11,17 @@ module Todos private + # rubocop: disable CodeReuse/ActiveRecord def without_authorized(items) items.where('user_id NOT IN (?)', authorized_users) end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def authorized_users ProjectAuthorization.select(:user_id).where(project_id: project_ids) end + # rubocop: enable CodeReuse/ActiveRecord def todos raise NotImplementedError diff --git a/app/services/todos/destroy/confidential_issue_service.rb b/app/services/todos/destroy/confidential_issue_service.rb index efec0f22da5..6276e332448 100644 --- a/app/services/todos/destroy/confidential_issue_service.rb +++ b/app/services/todos/destroy/confidential_issue_service.rb @@ -7,18 +7,22 @@ module Todos attr_reader :issue + # rubocop: disable CodeReuse/ActiveRecord def initialize(issue_id) @issue = Issue.find_by(id: issue_id) end + # rubocop: enable CodeReuse/ActiveRecord private override :todos + # rubocop: disable CodeReuse/ActiveRecord def todos Todo.where(target: issue) .where('user_id != ?', issue.author_id) .where('user_id NOT IN (?)', issue.assignees.select(:id)) end + # rubocop: enable CodeReuse/ActiveRecord override :todos_to_remove? def todos_to_remove? @@ -31,11 +35,13 @@ module Todos end override :authorized_users + # rubocop: disable CodeReuse/ActiveRecord def authorized_users ProjectAuthorization.select(:user_id) .where(project_id: project_ids) .where('access_level >= ?', Gitlab::Access::REPORTER) end + # rubocop: enable CodeReuse/ActiveRecord end end end diff --git a/app/services/todos/destroy/entity_leave_service.rb b/app/services/todos/destroy/entity_leave_service.rb index 4cb9d08713d..e8d1bcdd142 100644 --- a/app/services/todos/destroy/entity_leave_service.rb +++ b/app/services/todos/destroy/entity_leave_service.rb @@ -7,6 +7,7 @@ module Todos attr_reader :user, :entity + # rubocop: disable CodeReuse/ActiveRecord def initialize(user_id, entity_id, entity_type) unless %w(Group Project).include?(entity_type) raise ArgumentError.new("#{entity_type} is not an entity user can leave") @@ -15,6 +16,7 @@ module Todos @user = User.find_by(id: user_id) @entity = entity_type.constantize.find_by(id: entity_id) end + # rubocop: enable CodeReuse/ActiveRecord def execute return unless entity && user @@ -40,21 +42,28 @@ module Todos end end + # rubocop: disable CodeReuse/ActiveRecord def remove_confidential_issue_todos Todo.where( target_id: confidential_issues.select(:id), target_type: Issue, user_id: user.id ).delete_all end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def remove_project_todos Todo.where(project_id: non_authorized_projects, user_id: user.id).delete_all end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def remove_group_todos Todo.where(group_id: non_authorized_groups, user_id: user.id).delete_all end + # rubocop: enable CodeReuse/ActiveRecord override :project_ids + # rubocop: disable CodeReuse/ActiveRecord def project_ids condition = case entity when Project @@ -65,22 +74,29 @@ module Todos Project.where(condition).select(:id) end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def non_authorized_projects project_ids.where('id NOT IN (?)', user.authorized_projects.select(:id)) end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def non_authorized_groups return [] unless entity.is_a?(Namespace) entity.self_and_descendants.select(:id) .where('id NOT IN (?)', GroupsFinder.new(user).execute.select(:id)) end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def non_member_groups entity.self_and_descendants.select(:id) .where('id NOT IN (?)', user.membership_groups.select(:id)) end + # rubocop: enable CodeReuse/ActiveRecord def user_has_reporter_access? return unless entity.is_a?(Namespace) @@ -88,6 +104,7 @@ module Todos entity.member?(User.find(user.id), Gitlab::Access::REPORTER) end + # rubocop: disable CodeReuse/ActiveRecord def confidential_issues assigned_ids = IssueAssignee.select(:issue_id).where(user_id: user.id) authorized_reporter_projects = user @@ -98,6 +115,7 @@ module Todos .where('author_id != ?', user.id) .where('id NOT IN (?)', assigned_ids) end + # rubocop: enable CodeReuse/ActiveRecord end end end diff --git a/app/services/todos/destroy/group_private_service.rb b/app/services/todos/destroy/group_private_service.rb index f67f1d40597..d7ecbb952aa 100644 --- a/app/services/todos/destroy/group_private_service.rb +++ b/app/services/todos/destroy/group_private_service.rb @@ -7,16 +7,20 @@ module Todos attr_reader :group + # rubocop: disable CodeReuse/ActiveRecord def initialize(group_id) @group = Group.find_by(id: group_id) end + # rubocop: enable CodeReuse/ActiveRecord private override :todos + # rubocop: disable CodeReuse/ActiveRecord def todos Todo.where(group_id: group.id) end + # rubocop: enable CodeReuse/ActiveRecord override :authorized_users def authorized_users diff --git a/app/services/todos/destroy/private_features_service.rb b/app/services/todos/destroy/private_features_service.rb index 7e204885b31..a8c3fe0ef5a 100644 --- a/app/services/todos/destroy/private_features_service.rb +++ b/app/services/todos/destroy/private_features_service.rb @@ -10,6 +10,7 @@ module Todos @user_id = user_id end + # rubocop: disable CodeReuse/ActiveRecord def execute ProjectFeature.where(project_id: project_ids).each do |project_features| target_types = [] @@ -22,6 +23,7 @@ module Todos remove_todos(project_features.project_id, target_types) end end + # rubocop: enable CodeReuse/ActiveRecord private @@ -29,6 +31,7 @@ module Todos feature_level == ProjectFeature::PRIVATE end + # rubocop: disable CodeReuse/ActiveRecord def remove_todos(project_id, target_types) items = Todo.where(project_id: project_id) items = items.where(user_id: user_id) if user_id @@ -37,6 +40,7 @@ module Todos .where(target_type: target_types) .delete_all end + # rubocop: enable CodeReuse/ActiveRecord end end end diff --git a/app/services/todos/destroy/project_private_service.rb b/app/services/todos/destroy/project_private_service.rb index ae8fab3ffca..e00d10c3780 100644 --- a/app/services/todos/destroy/project_private_service.rb +++ b/app/services/todos/destroy/project_private_service.rb @@ -7,16 +7,20 @@ module Todos attr_reader :project + # rubocop: disable CodeReuse/ActiveRecord def initialize(project_id) @project = Project.find_by(id: project_id) end + # rubocop: enable CodeReuse/ActiveRecord private override :todos + # rubocop: disable CodeReuse/ActiveRecord def todos Todo.where(project_id: project.id) end + # rubocop: enable CodeReuse/ActiveRecord override :project_ids def project_ids diff --git a/app/services/update_release_service.rb b/app/services/update_release_service.rb index 422ba668e35..e2228ca026c 100644 --- a/app/services/update_release_service.rb +++ b/app/services/update_release_service.rb @@ -1,6 +1,7 @@ # frozen_string_literal: true class UpdateReleaseService < BaseService + # rubocop: disable CodeReuse/ActiveRecord def execute(tag_name, release_description) repository = project.repository existing_tag = repository.find_tag(tag_name) @@ -19,6 +20,7 @@ class UpdateReleaseService < BaseService error('Tag does not exist', 404) end end + # rubocop: enable CodeReuse/ActiveRecord def success(release) super().merge(release: release) diff --git a/app/services/users/last_push_event_service.rb b/app/services/users/last_push_event_service.rb index a9c9497520b..b3980b8e32c 100644 --- a/app/services/users/last_push_event_service.rb +++ b/app/services/users/last_push_event_service.rb @@ -58,11 +58,13 @@ module Users private + # rubocop: disable CodeReuse/ActiveRecord def find_event_in_database(id) PushEvent .without_existing_merge_requests .find_by(id: id) end + # rubocop: enable CodeReuse/ActiveRecord def user_cache_key "last-push-event/#{@user.id}" diff --git a/app/services/users/migrate_to_ghost_user_service.rb b/app/services/users/migrate_to_ghost_user_service.rb index 4d47078bf43..04fd6e37501 100644 --- a/app/services/users/migrate_to_ghost_user_service.rb +++ b/app/services/users/migrate_to_ghost_user_service.rb @@ -54,15 +54,19 @@ module Users migrate_award_emoji end + # rubocop: disable CodeReuse/ActiveRecord def migrate_issues user.issues.update_all(author_id: ghost_user.id) Issue.where(last_edited_by_id: user.id).update_all(last_edited_by_id: ghost_user.id) end + # rubocop: enable CodeReuse/ActiveRecord + # rubocop: disable CodeReuse/ActiveRecord def migrate_merge_requests user.merge_requests.update_all(author_id: ghost_user.id) MergeRequest.where(merge_user_id: user.id).update_all(merge_user_id: ghost_user.id) end + # rubocop: enable CodeReuse/ActiveRecord def migrate_notes user.notes.update_all(author_id: ghost_user.id) diff --git a/app/services/users/respond_to_terms_service.rb b/app/services/users/respond_to_terms_service.rb index 9efa3b285a8..254480304f9 100644 --- a/app/services/users/respond_to_terms_service.rb +++ b/app/services/users/respond_to_terms_service.rb @@ -6,6 +6,7 @@ module Users @user, @term = user, term end + # rubocop: disable CodeReuse/ActiveRecord def execute(accepted:) agreement = @user.term_agreements.find_or_initialize_by(term: @term) agreement.accepted = accepted @@ -16,6 +17,7 @@ module Users agreement end + # rubocop: enable CodeReuse/ActiveRecord private |