Commit 4de93b6a authored by Matija Čupić's avatar Matija Čupić

Refactor external_pipelines query

parent 6075a932
...@@ -24,18 +24,15 @@ module Gitlab ...@@ -24,18 +24,15 @@ module Gitlab
class CommitStatus < ActiveRecord::Base class CommitStatus < ActiveRecord::Base
self.table_name = 'ci_builds' self.table_name = 'ci_builds'
self.inheritance_column = :_type_disabled 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
end end
def perform(start_id, stop_id) def perform(start_id, stop_id)
external_pipelines(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 end
private private
...@@ -44,8 +41,8 @@ module Gitlab ...@@ -44,8 +41,8 @@ module Gitlab
Migratable::Pipeline.where(id: (start_id..stop_id)) Migratable::Pipeline.where(id: (start_id..stop_id))
.where( .where(
'EXISTS (?) AND NOT EXISTS (?)', 'EXISTS (?) AND NOT EXISTS (?)',
Migratable::GenericCommitStatus.where("type='CommitStatus'").where('ci_builds.commit_id=ci_pipelines.id').select(1), Migratable::CommitStatus.of_type('GenericCommitStatus').has_pipeline.select(1),
Migratable::Build.where("type='Ci::Build'").where('ci_builds.commit_id=ci_pipelines.id').select(1) Migratable::CommitStatus.of_type('Ci::Build').has_pipeline.select(1),
) )
end end
end end
......
...@@ -12,7 +12,7 @@ describe Gitlab::BackgroundMigration::PopulateExternalPipelineSource, :migration ...@@ -12,7 +12,7 @@ describe Gitlab::BackgroundMigration::PopulateExternalPipelineSource, :migration
let!(:internal_pipeline) { pipelines.create(id: 1, source: described_class::Migratable::Pipeline.sources[:web]) } let!(:internal_pipeline) { pipelines.create(id: 1, source: described_class::Migratable::Pipeline.sources[:web]) }
let!(:external_pipeline) { pipelines.create(id: 2, source: nil) } let!(:external_pipeline) { pipelines.create(id: 2, source: nil) }
let!(:second_external_pipeline) { pipelines.create(id: 3, 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') } let!(:build) { builds.create(id: 2, commit_id: 1, type: 'Ci::Build') }
subject { migration.perform(1, 2) } subject { migration.perform(1, 2) }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment