DEV: Maintain github_user_info primary key values during migration (#11286)
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.
This commit is contained in:
parent
a6f700d4ef
commit
02278109d6
|
@ -2,6 +2,11 @@
|
|||
|
||||
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,
|
||||
|
@ -11,6 +16,7 @@ class MigrateGithubUserInfos < ActiveRecord::Migration[6.0]
|
|||
last_used,
|
||||
created_at,
|
||||
updated_at
|
||||
#{", id" if maintain_ids}
|
||||
) SELECT
|
||||
'github',
|
||||
github_user_id,
|
||||
|
@ -19,8 +25,18 @@ class MigrateGithubUserInfos < ActiveRecord::Migration[6.0]
|
|||
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
|
||||
|
|
Loading…
Reference in New Issue