Revert "Merge branch 'rs-remove-bad-foreground-migration' into 'master'"
This reverts merge request !14240
This commit is contained in:
parent
33010da28b
commit
652a9324a1
1 changed files with 57 additions and 0 deletions
57
db/migrate/20170828135939_migrate_user_external_mail_data.rb
Normal file
57
db/migrate/20170828135939_migrate_user_external_mail_data.rb
Normal file
|
@ -0,0 +1,57 @@
|
|||
# See http://doc.gitlab.com/ce/development/migration_style_guide.html
|
||||
# for more information on how to write migrations for GitLab.
|
||||
|
||||
class MigrateUserExternalMailData < ActiveRecord::Migration
|
||||
include Gitlab::Database::MigrationHelpers
|
||||
|
||||
DOWNTIME = false
|
||||
|
||||
disable_ddl_transaction!
|
||||
|
||||
class User < ActiveRecord::Base
|
||||
self.table_name = 'users'
|
||||
|
||||
include EachBatch
|
||||
end
|
||||
|
||||
class UserSyncedAttributesMetadata < ActiveRecord::Base
|
||||
self.table_name = 'user_synced_attributes_metadata'
|
||||
|
||||
include EachBatch
|
||||
end
|
||||
|
||||
def up
|
||||
User.each_batch do |batch|
|
||||
start_id, end_id = batch.pluck('MIN(id), MAX(id)').first
|
||||
|
||||
execute <<-EOF
|
||||
INSERT INTO user_synced_attributes_metadata (user_id, provider, email_synced)
|
||||
SELECT id, email_provider, external_email
|
||||
FROM users
|
||||
WHERE external_email = TRUE
|
||||
AND NOT EXISTS (
|
||||
SELECT true
|
||||
FROM user_synced_attributes_metadata
|
||||
WHERE user_id = users.id
|
||||
AND provider = users.email_provider
|
||||
)
|
||||
AND id BETWEEN #{start_id} AND #{end_id}
|
||||
EOF
|
||||
end
|
||||
end
|
||||
|
||||
def down
|
||||
UserSyncedAttributesMetadata.each_batch do |batch|
|
||||
start_id, end_id = batch.pluck('MIN(id), MAX(id)').first
|
||||
|
||||
execute <<-EOF
|
||||
UPDATE users
|
||||
SET users.email_provider = metadata.provider, users.external_email = metadata.email_synced
|
||||
FROM user_synced_attributes_metadata as metadata, users
|
||||
WHERE metadata.email_synced = TRUE
|
||||
AND metadata.user_id = users.id
|
||||
AND id BETWEEN #{start_id} AND #{end_id}
|
||||
EOF
|
||||
end
|
||||
end
|
||||
end
|
Loading…
Reference in a new issue