blob: 4d8343ca2dd67f8ef3fa070fa62d497fca5b3d81 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
# frozen_string_literal: true
class ScheduleBackfillReleasesAuthorId < Gitlab::Database::Migration[2.1]
MIGRATION = 'BackfillReleasesAuthorId'
JOB_DELAY_INTERVAL = 2.minutes
GHOST_USER_TYPE = 5
restrict_gitlab_migration gitlab_schema: :gitlab_main
class User < MigrationRecord
self.table_name = 'users'
end
class Release < MigrationRecord
self.table_name = 'releases'
end
def up
unless release_with_empty_author_exists?
say "There are no releases with empty author_id, so skipping migration #{self.class.name}"
return
end
create_ghost_user if ghost_user_id.nil?
queue_batched_background_migration(
MIGRATION,
:releases,
:id,
ghost_user_id,
job_interval: JOB_DELAY_INTERVAL
)
end
def down
delete_batched_background_migration(MIGRATION, :releases, :id, [ghost_user_id])
end
private
def ghost_user_id
User.find_by(user_type: GHOST_USER_TYPE)&.id
end
def create_ghost_user
user = User.new
user.name = 'Ghost User'
user.username = 'ghost'
user.email = 'ghost@example.com'
user.user_type = GHOST_USER_TYPE
user.projects_limit = 100000
user.save!
end
def release_with_empty_author_exists?
Release.exists?(author_id: nil)
end
end
|