mirror of
https://github.com/discourse/discourse.git
synced 2024-11-25 09:42:07 +08:00
02278109d6
This will only happen if the user_associated_accounts table is currently empty. It's useful for people that may be depending on primary key values in data explorer queries. This change will only have an effect on sites which have not already run this migration.
46 lines
1.2 KiB
Ruby
46 lines
1.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class MigrateGithubUserInfos < ActiveRecord::Migration[6.0]
|
|
def up
|
|
# If the user_associated_accounts table is currently empty,
|
|
# maintain the primary key from github_user_infos
|
|
# This is useful for people that are using data explorer to access the data
|
|
maintain_ids = DB.query_single("SELECT count(*) FROM user_associated_accounts")[0] == 0
|
|
|
|
execute <<~SQL
|
|
INSERT INTO user_associated_accounts (
|
|
provider_name,
|
|
provider_uid,
|
|
user_id,
|
|
info,
|
|
last_used,
|
|
created_at,
|
|
updated_at
|
|
#{", id" if maintain_ids}
|
|
) SELECT
|
|
'github',
|
|
github_user_id,
|
|
user_id,
|
|
json_build_object('nickname', screen_name),
|
|
updated_at,
|
|
created_at,
|
|
updated_at
|
|
#{", id" if maintain_ids}
|
|
FROM github_user_infos
|
|
SQL
|
|
|
|
if maintain_ids
|
|
execute <<~SQL
|
|
SELECT setval(
|
|
pg_get_serial_sequence('user_associated_accounts', 'id'),
|
|
(select greatest(max(id), 1) from user_associated_accounts)
|
|
);
|
|
SQL
|
|
end
|
|
end
|
|
|
|
def down
|
|
raise ActiveRecord::IrreversibleMigration
|
|
end
|
|
end
|