summaryrefslogtreecommitdiff
path: root/db/post_migrate/20230131194959_remove_invalid_deploy_access_level.rb
diff options
context:
space:
mode:
Diffstat (limited to 'db/post_migrate/20230131194959_remove_invalid_deploy_access_level.rb')
-rw-r--r--db/post_migrate/20230131194959_remove_invalid_deploy_access_level.rb22
1 files changed, 22 insertions, 0 deletions
diff --git a/db/post_migrate/20230131194959_remove_invalid_deploy_access_level.rb b/db/post_migrate/20230131194959_remove_invalid_deploy_access_level.rb
new file mode 100644
index 00000000000..57364e2200b
--- /dev/null
+++ b/db/post_migrate/20230131194959_remove_invalid_deploy_access_level.rb
@@ -0,0 +1,22 @@
+# frozen_string_literal: true
+
+class RemoveInvalidDeployAccessLevel < Gitlab::Database::Migration[2.1]
+ disable_ddl_transaction!
+
+ restrict_gitlab_migration gitlab_schema: :gitlab_main
+
+ # clean up any rows with invalid access_level entries
+ def up
+ update_column_in_batches(:protected_environment_deploy_access_levels, :access_level, nil) do |table, query|
+ query.where(
+ table.grouping(table[:user_id].not_eq(nil).or(table[:group_id].not_eq(nil)))
+ .and(table[:access_level].not_eq(nil)))
+ end
+ end
+
+ def down
+ # no-op
+
+ # we are setting access_level to NULL if group_id or user_id are present
+ end
+end