blob: dd812964902b0a1cce4e01c623f71a8fe29cb6d9 (
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
|
# See http://doc.gitlab.com/ce/development/migration_style_guide.html
# for more information on how to write migrations for GitLab.
class CleanUpPendingDeleteProjects < ActiveRecord::Migration
include Gitlab::Database::MigrationHelpers
DOWNTIME = false
disable_ddl_transaction!
def up
Project.unscoped.where(pending_delete: true).each { |project| delete_project(project, admin) }
end
def down
# noop
end
private
def delete_project(project)
project.team.truncate
unlink_fork(project) if project.forked?
[:events, :issues, :merge_requests, :labels, :milestones, :notes, :snippets].each do |thing|
project.send(thing).delete_all
end
# Override Project#remove_pages for this instance so it doesn't do anything
def project.remove_pages
end
project.destroy!
end
def unlink_fork(project)
merge_requests = project.forked_from_project.merge_requests.opened.from_project(project)
merge_requests.update_all(state: 'closed')
project.forked_project_link.destroy
end
end
|