discourse/db/migrate/20210621234939_backfill_email_log_topic_id.rb
Bianca Nenciu c358151a6c
DEV: Promote historic post_deploy migrations ()
This commit promotes all post_deploy migrations which existed in
Discourse v2.8.0 (timestamp <= 20220107014925).

This commit includes a fix to the promote_migrations script to promote
all migrations of the first version of the previous stable version. For
example, if the current stable version is v2.8.13, the version used as
a cutoff for promoting migrations is v2.8.0.
2022-12-16 13:36:30 +02:00

31 lines
715 B
Ruby

# frozen_string_literal: true
class BackfillEmailLogTopicId < ActiveRecord::Migration[6.1]
disable_ddl_transaction!
BATCH_SIZE = 30_000
def up
loop do
count = DB.exec(<<~SQL, batch_size: BATCH_SIZE)
WITH cte AS (
SELECT l1.id, p1.topic_id
FROM email_logs l1
INNER JOIN posts p1 ON p1.id = l1.post_id
WHERE l1.topic_id IS NULL AND p1.topic_id IS NOT NULL
LIMIT :batch_size
)
UPDATE email_logs
SET topic_id = cte.topic_id
FROM cte
WHERE email_logs.id = cte.id
SQL
break if count == 0
end
end
def down
raise ActiveRecord::IrreversibleMigration
end
end