Fix some old migration scripts (#17394)

* Fix some old migration scripts

* Fix edge case in two-step migration from older releases
main
Claire 2022-01-30 21:38:54 +01:00 committed by GitHub
parent f5639e1cbe
commit ac583fce21
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 53 additions and 4 deletions

View File

@ -1,6 +1,46 @@
class RemoveFauxRemoteAccountDuplicates < ActiveRecord::Migration[5.2] class RemoveFauxRemoteAccountDuplicates < ActiveRecord::Migration[5.2]
disable_ddl_transaction! disable_ddl_transaction!
class StreamEntry < ApplicationRecord
# Dummy class, to make migration possible across version changes
belongs_to :account, inverse_of: :stream_entries
end
class Status < ApplicationRecord
# Dummy class, to make migration possible across version changes
belongs_to :account, inverse_of: :statuses
has_many :favourites, inverse_of: :status, dependent: :destroy
has_many :mentions, dependent: :destroy, inverse_of: :status
end
class Favourite < ApplicationRecord
# Dummy class, to make migration possible across version changes
belongs_to :account, inverse_of: :favourites
belongs_to :status, inverse_of: :favourites
end
class Mention < ApplicationRecord
# Dummy class, to make migration possible across version changes
belongs_to :account, inverse_of: :mentions
belongs_to :status
end
class Notification < ApplicationRecord
# Dummy class, to make migration possible across version changes
belongs_to :account, optional: true
belongs_to :from_account, class_name: 'Account', optional: true
belongs_to :activity, polymorphic: true, optional: true
end
class Account < ApplicationRecord
# Dummy class, to make migration possible across version changes
has_many :stream_entries, inverse_of: :account, dependent: :destroy
has_many :statuses, inverse_of: :account, dependent: :destroy
has_many :favourites, inverse_of: :account, dependent: :destroy
has_many :mentions, inverse_of: :account, dependent: :destroy
has_many :notifications, inverse_of: :account, dependent: :destroy
end
def up def up
local_domain = Rails.configuration.x.local_domain local_domain = Rails.configuration.x.local_domain

View File

@ -1,4 +1,9 @@
class AddInstanceActor < ActiveRecord::Migration[5.2] class AddInstanceActor < ActiveRecord::Migration[5.2]
class Account < ApplicationRecord
# Dummy class, to make migration possible across version changes
validates :username, uniqueness: { scope: :domain, case_sensitive: false }
end
def up def up
Account.create!(id: -99, actor_type: 'Application', locked: true, username: Rails.configuration.x.local_domain) Account.create!(id: -99, actor_type: 'Application', locked: true, username: Rails.configuration.x.local_domain)
end end

View File

@ -1,4 +1,8 @@
class UpdatePtLocales < ActiveRecord::Migration[5.2] class UpdatePtLocales < ActiveRecord::Migration[5.2]
class User < ApplicationRecord
# Dummy class, to make migration possible across version changes
end
disable_ddl_transaction! disable_ddl_transaction!
def up def up

View File

@ -20,7 +20,7 @@ FROM (
HAVING count(follows.id) >= 5 HAVING count(follows.id) >= 5
UNION ALL UNION ALL
SELECT accounts.id AS account_id, SELECT accounts.id AS account_id,
sum(reblogs_count + favourites_count) / (1.0 + sum(reblogs_count + favourites_count)) AS rank, sum(status_stats.reblogs_count + status_stats.favourites_count) / (1.0 + sum(status_stats.reblogs_count + status_stats.favourites_count)) AS rank,
'most_interactions' AS reason 'most_interactions' AS reason
FROM status_stats FROM status_stats
INNER JOIN statuses ON statuses.id = status_stats.status_id INNER JOIN statuses ON statuses.id = status_stats.status_id
@ -32,7 +32,7 @@ FROM (
AND accounts.locked = 'f' AND accounts.locked = 'f'
AND accounts.discoverable = 't' AND accounts.discoverable = 't'
GROUP BY accounts.id GROUP BY accounts.id
HAVING sum(reblogs_count + favourites_count) >= 5 HAVING sum(status_stats.reblogs_count + status_stats.favourites_count) >= 5
) t0 ) t0
GROUP BY account_id GROUP BY account_id
ORDER BY rank DESC ORDER BY rank DESC

View File

@ -18,7 +18,7 @@ FROM (
HAVING count(follows.id) >= 5 HAVING count(follows.id) >= 5
UNION ALL UNION ALL
SELECT account_summaries.account_id AS account_id, SELECT account_summaries.account_id AS account_id,
sum(reblogs_count + favourites_count) / (1.0 + sum(reblogs_count + favourites_count)) AS rank, sum(status_stats.reblogs_count + status_stats.favourites_count) / (1.0 + sum(status_stats.reblogs_count + status_stats.favourites_count)) AS rank,
'most_interactions' AS reason 'most_interactions' AS reason
FROM status_stats FROM status_stats
INNER JOIN statuses ON statuses.id = status_stats.status_id INNER JOIN statuses ON statuses.id = status_stats.status_id
@ -28,7 +28,7 @@ FROM (
AND account_summaries.sensitive = 'f' AND account_summaries.sensitive = 'f'
AND follow_recommendation_suppressions.id IS NULL AND follow_recommendation_suppressions.id IS NULL
GROUP BY account_summaries.account_id GROUP BY account_summaries.account_id
HAVING sum(reblogs_count + favourites_count) >= 5 HAVING sum(status_stats.reblogs_count + status_stats.favourites_count) >= 5
) t0 ) t0
GROUP BY account_id GROUP BY account_id
ORDER BY rank DESC ORDER BY rank DESC