58 lines
1.6 KiB
Ruby
58 lines
1.6 KiB
Ruby
# See http://doc.gitlab.com/ce/development/migration_style_guide.html
|
|
# for more information on how to write migrations for GitLab.
|
|
|
|
class RemoveUndeletedGroups < ActiveRecord::Migration
|
|
DOWNTIME = false
|
|
|
|
def up
|
|
execute <<-EOF.strip_heredoc
|
|
DELETE FROM projects
|
|
WHERE namespace_id IN (
|
|
SELECT id FROM (
|
|
SELECT id
|
|
FROM namespaces
|
|
WHERE deleted_at IS NOT NULL
|
|
) namespace_ids
|
|
);
|
|
EOF
|
|
|
|
if defined?(Gitlab::License)
|
|
# EE adds these columns but we have to make sure this data is cleaned up
|
|
# here before we run the DELETE below. An alternative would be patching
|
|
# this migration in EE but this will only result in a mess and confusing
|
|
# migrations.
|
|
execute <<-EOF.strip_heredoc
|
|
DELETE FROM protected_branch_push_access_levels
|
|
WHERE group_id IN (
|
|
SELECT id FROM (
|
|
SELECT id
|
|
FROM namespaces
|
|
WHERE deleted_at IS NOT NULL
|
|
) namespace_ids
|
|
);
|
|
EOF
|
|
|
|
execute <<-EOF.strip_heredoc
|
|
DELETE FROM protected_branch_merge_access_levels
|
|
WHERE group_id IN (
|
|
SELECT id FROM (
|
|
SELECT id
|
|
FROM namespaces
|
|
WHERE deleted_at IS NOT NULL
|
|
) namespace_ids
|
|
);
|
|
EOF
|
|
end
|
|
|
|
# This removes namespaces that were supposed to be soft deleted but still
|
|
# reside in the database.
|
|
execute "DELETE FROM namespaces WHERE deleted_at IS NOT NULL;"
|
|
end
|
|
|
|
def down
|
|
# This is an irreversible migration;
|
|
# If someone is trying to rollback for other reasons, we should not throw an Exception.
|
|
# raise ActiveRecord::IrreversibleMigration
|
|
end
|
|
end
|