summaryrefslogtreecommitdiff
path: root/lib/gitlab/background_migration/migrate_build_stage_id_reference.rb
blob: 711126ea0d3f3b5646bcbf237afcc975c687fae2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
module Gitlab
  module BackgroundMigration
    class MigrateBuildStageIdReference
      def perform(id)
        raise ArgumentError unless id.present?

        sql = <<-SQL.strip_heredoc
          UPDATE "ci_builds" SET "stage_id" = (
            SELECT id FROM ci_stages
              WHERE ci_stages.pipeline_id = ci_builds.commit_id
              AND ci_stages.name = ci_builds.stage
            )
          WHERE "ci_builds"."id" = #{id} AND "ci_builds"."stage_id" IS NULL
        SQL

        ActiveRecord::Base.connection.execute(sql)
      end
    end
  end
end