summaryrefslogtreecommitdiff
path: root/db/post_migrate/20170816102555_cleanup_nonexisting_namespace_pending_delete_projects.rb
diff options
context:
space:
mode:
Diffstat (limited to 'db/post_migrate/20170816102555_cleanup_nonexisting_namespace_pending_delete_projects.rb')
-rw-r--r--db/post_migrate/20170816102555_cleanup_nonexisting_namespace_pending_delete_projects.rb54
1 files changed, 0 insertions, 54 deletions
diff --git a/db/post_migrate/20170816102555_cleanup_nonexisting_namespace_pending_delete_projects.rb b/db/post_migrate/20170816102555_cleanup_nonexisting_namespace_pending_delete_projects.rb
deleted file mode 100644
index 27656fd926d..00000000000
--- a/db/post_migrate/20170816102555_cleanup_nonexisting_namespace_pending_delete_projects.rb
+++ /dev/null
@@ -1,54 +0,0 @@
-# Follow up of CleanupNamespacelessPendingDeleteProjects and it cleans
-# all projects with `pending_delete = true` and for which the
-# namespace no longer exists.
-class CleanupNonexistingNamespacePendingDeleteProjects < ActiveRecord::Migration[4.2]
- include Gitlab::Database::MigrationHelpers
-
- DOWNTIME = false
-
- disable_ddl_transaction!
-
- class Project < ActiveRecord::Base
- self.table_name = 'projects'
-
- include ::EachBatch
- end
-
- class Namespace < ActiveRecord::Base
- self.table_name = 'namespaces'
- end
-
- def up
- find_projects.each_batch do |batch|
- args = batch.pluck(:id).map { |id| [id] }
-
- NamespacelessProjectDestroyWorker.bulk_perform_async(args)
- end
- end
-
- def down
- # NOOP
- end
-
- private
-
- def find_projects
- projects = Project.arel_table
- namespaces = Namespace.arel_table
-
- namespace_query = namespaces.project(1)
- .where(namespaces[:id].eq(projects[:namespace_id]))
- .exists.not
-
- # SELECT "projects"."id"
- # FROM "projects"
- # WHERE "projects"."pending_delete" = 't'
- # AND (NOT (EXISTS
- # (SELECT 1
- # FROM "namespaces"
- # WHERE "namespaces"."id" = "projects"."namespace_id")))
- Project.where(projects[:pending_delete].eq(true))
- .where(namespace_query)
- .select(:id)
- end
-end