diff options
author | Matija Čupić <matteeyah@gmail.com> | 2018-09-27 19:28:24 +0200 |
---|---|---|
committer | Matija Čupić <matteeyah@gmail.com> | 2018-09-27 19:28:24 +0200 |
commit | 4de93b6a3e4eabd3eae9eb23910c6acd62649cfa (patch) | |
tree | 4291d45297f0aca1f217c0e2c5249a115177e7e2 | |
parent | 6075a9323a228dfdb4aca7a99861e51c8988cc56 (diff) | |
download | gitlab-ce-4de93b6a3e4eabd3eae9eb23910c6acd62649cfa.tar.gz |
Refactor external_pipelines query
-rw-r--r-- | lib/gitlab/background_migration/populate_external_pipeline_source.rb | 13 | ||||
-rw-r--r-- | spec/lib/gitlab/background_migration/populate_external_pipeline_source_spec.rb | 2 |
2 files changed, 6 insertions, 9 deletions
diff --git a/lib/gitlab/background_migration/populate_external_pipeline_source.rb b/lib/gitlab/background_migration/populate_external_pipeline_source.rb index f635064cac5..98eb7f0b897 100644 --- a/lib/gitlab/background_migration/populate_external_pipeline_source.rb +++ b/lib/gitlab/background_migration/populate_external_pipeline_source.rb @@ -24,18 +24,15 @@ module Gitlab class CommitStatus < ActiveRecord::Base self.table_name = 'ci_builds' self.inheritance_column = :_type_disabled - end - - class Build < CommitStatus - end - class GenericCommitStatus < CommitStatus + scope :has_pipeline, -> { where('ci_builds.commit_id=ci_pipelines.id') } + scope :of_type, -> (type) { where('type=?', type) } end end def perform(start_id, stop_id) external_pipelines(start_id, stop_id) - .update_all(:source, Migratable::Pipeline.sources[:external]) + .update_all(source: Migratable::Pipeline.sources[:external]) end private @@ -44,8 +41,8 @@ module Gitlab Migratable::Pipeline.where(id: (start_id..stop_id)) .where( 'EXISTS (?) AND NOT EXISTS (?)', - Migratable::GenericCommitStatus.where("type='CommitStatus'").where('ci_builds.commit_id=ci_pipelines.id').select(1), - Migratable::Build.where("type='Ci::Build'").where('ci_builds.commit_id=ci_pipelines.id').select(1) + Migratable::CommitStatus.of_type('GenericCommitStatus').has_pipeline.select(1), + Migratable::CommitStatus.of_type('Ci::Build').has_pipeline.select(1), ) end end diff --git a/spec/lib/gitlab/background_migration/populate_external_pipeline_source_spec.rb b/spec/lib/gitlab/background_migration/populate_external_pipeline_source_spec.rb index 8e918daefb5..d3926ca4e7c 100644 --- a/spec/lib/gitlab/background_migration/populate_external_pipeline_source_spec.rb +++ b/spec/lib/gitlab/background_migration/populate_external_pipeline_source_spec.rb @@ -12,7 +12,7 @@ describe Gitlab::BackgroundMigration::PopulateExternalPipelineSource, :migration let!(:internal_pipeline) { pipelines.create(id: 1, source: described_class::Migratable::Pipeline.sources[:web]) } let!(:external_pipeline) { pipelines.create(id: 2, source: nil) } let!(:second_external_pipeline) { pipelines.create(id: 3, source: nil) } - let!(:status) { statuses.create(id: 1, commit_id: 2, type: 'CommitStatus') } + let!(:status) { statuses.create(id: 1, commit_id: 2, type: 'GenericCommitStatus') } let!(:build) { builds.create(id: 2, commit_id: 1, type: 'Ci::Build') } subject { migration.perform(1, 2) } |