diff options
author | Sean Carroll <scarroll@gitlab.com> | 2019-09-10 21:04:00 +0200 |
---|---|---|
committer | Sean Carroll <scarroll@gitlab.com> | 2019-09-10 21:04:05 +0200 |
commit | 5741b05e2d0888ba70c2772adad597aabf553cd2 (patch) | |
tree | 64833d6e444f9bdd6592205af5587383bff4cc9b | |
parent | 9a2ae7e290023b4f1d05d8692142e0628e9e8c31 (diff) | |
download | gitlab-ce-60060-backfill-release-name-with-tag-name.tar.gz |
Default for private projects60060-backfill-release-name-with-tag-name
-rw-r--r-- | db/post_migrate/20190829131947_backfill_release_name_with_tag.rb | 7 | ||||
-rw-r--r-- | spec/migrations/backfill_release_name_with_tag_spec.rb | 32 |
2 files changed, 30 insertions, 9 deletions
diff --git a/db/post_migrate/20190829131947_backfill_release_name_with_tag.rb b/db/post_migrate/20190829131947_backfill_release_name_with_tag.rb index 0f4996cc695..a2a4f80b38f 100644 --- a/db/post_migrate/20190829131947_backfill_release_name_with_tag.rb +++ b/db/post_migrate/20190829131947_backfill_release_name_with_tag.rb @@ -8,11 +8,16 @@ class BackfillReleaseNameWithTag < ActiveRecord::Migration[5.2] disable_ddl_transaction! def up - subquery = Arel.sql("select id from projects where visibility_level = #{Gitlab::VisibilityLevel::PUBLIC}") + table = Project.arel_table + subquery = table.project(table[:id]).where(table[:visibility_level].eq(Gitlab::VisibilityLevel::PUBLIC)) update_column_in_batches(:releases, :name, Release.arel_table[:tag]) do |table, query| query.where(table[:name].eq(nil)).where(table[:project_id].in(subquery)) end + + update_column_in_batches(:releases, :name, Arel.sql("'release-' || id")) do |table, query| + query.where(table[:name].eq(nil)).where(table[:project_id].not_in(subquery)) + end end def down diff --git a/spec/migrations/backfill_release_name_with_tag_spec.rb b/spec/migrations/backfill_release_name_with_tag_spec.rb index 3c61ac11270..996f326836f 100644 --- a/spec/migrations/backfill_release_name_with_tag_spec.rb +++ b/spec/migrations/backfill_release_name_with_tag_spec.rb @@ -7,17 +7,33 @@ describe BackfillReleaseNameWithTag, :migration do let(:releases) { table(:releases) } let(:namespaces) { table(:namespaces) } let(:projects) { table(:projects) } - let(:namespace) { namespaces.create(name: 'foo', path: 'foo') } - let(:project) { projects.create!(namespace_id: namespace.id, visibility_level: Gitlab::VisibilityLevel::PUBLIC) } - let!(:release) { releases.create!(project_id: project.id, name: nil, tag: 'v1.0.0', released_at: 2.days.ago) } - it 'defaults name to tag value' do - expect(release.tag).to be_present + context 'public project' do + let(:project) { projects.create!(namespace_id: namespace.id, visibility_level: Gitlab::VisibilityLevel::PUBLIC) } + let!(:release) { releases.create!(project_id: project.id, name: nil, tag: 'v1.0.0', released_at: 2.days.ago) } + + it 'defaults name to tag value' do + expect(release.tag).to be_present + + migrate! + release.reload + + expect(release.name).to eq(release.tag) + end + end + + context 'private project' do + let(:project) { projects.create!(namespace_id: namespace.id, visibility_level: Gitlab::VisibilityLevel::PRIVATE) } + let!(:release) { releases.create!(project_id: project.id, name: nil, tag: 'v1.0.0', released_at: 2.days.ago) } + + it 'defaults name to tag value' do + expect(release.tag).to be_present - migrate! + migrate! + release.reload - release.reload - expect(release.name).to eq(release.tag) + expect(release.name).to eq("release-#{release.id}") + end end end |