speed up migration to identities
This commit is contained in:
parent
bbf9953b99
commit
7d8dfccf70
1 changed files with 15 additions and 9 deletions
|
@ -8,9 +8,11 @@ class AddIdentityTable < ActiveRecord::Migration
|
|||
|
||||
add_index :identities, :user_id
|
||||
|
||||
User.where("provider IS NOT NULL").find_each do |user|
|
||||
execute "INSERT INTO identities(provider, extern_uid, user_id) VALUES('#{user.provider}', '#{user.extern_uid}', '#{user.id}')"
|
||||
end
|
||||
execute <<eos
|
||||
INSERT INTO identities (provider, extern_uid, user_id)
|
||||
SELECT provider, extern_uid, id FROM users
|
||||
WHERE provider IS NOT NULL
|
||||
eos
|
||||
|
||||
remove_column :users, :extern_uid
|
||||
remove_column :users, :provider
|
||||
|
@ -20,12 +22,16 @@ class AddIdentityTable < ActiveRecord::Migration
|
|||
add_column :users, :extern_uid, :string
|
||||
add_column :users, :provider, :string
|
||||
|
||||
User.where("id IN(SELECT user_id FROM identities)").find_each do |user|
|
||||
identity = user.identities.last
|
||||
user.extern_uid = identity.extern_uid
|
||||
user.provider = identity.provider
|
||||
user.save
|
||||
end
|
||||
if ActiveRecord::Base.connection.adapter_name == 'PostgreSQL'
|
||||
execute <<eos
|
||||
UPDATE users u
|
||||
SET provider = i.provider, extern_uid = i.extern_uid
|
||||
FROM identities i
|
||||
WHERE i.user_id = u.id
|
||||
eos
|
||||
else
|
||||
execute "UPDATE users u, identities i SET u.provider = i.provider, u.extern_uid = i.extern_uid WHERE u.id = i.user_id"
|
||||
end
|
||||
|
||||
drop_table :identities
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue