FIX: Don't cause exceptions due to rename of `reply_id` column
This syncs the value of the `reply_id` column into the `reply_post_id` column until all servers have been deployed and the post migrations ran.
Follow-up to ab07b945c2
This commit is contained in:
parent
b56ade5043
commit
cb54bf4f45
|
@ -2,8 +2,6 @@
|
|||
|
||||
class RenameReplyIdColumn < ActiveRecord::Migration[6.0]
|
||||
def up
|
||||
Migration::ColumnDropper.mark_readonly(:post_replies, :reply_id)
|
||||
|
||||
add_column :post_replies, :reply_post_id, :integer
|
||||
|
||||
execute <<~SQL
|
||||
|
|
|
@ -0,0 +1,38 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class AddTriggerToSyncPostReplies < ActiveRecord::Migration[6.0]
|
||||
def up
|
||||
# we don't want this column to be readonly yet
|
||||
Migration::ColumnDropper.drop_readonly(:post_replies, :reply_id)
|
||||
|
||||
DB.exec <<~SQL
|
||||
CREATE OR REPLACE FUNCTION post_replies_sync_reply_id()
|
||||
RETURNS trigger AS $rcr$
|
||||
BEGIN
|
||||
NEW.reply_post_id := NEW.reply_id;
|
||||
RETURN NEW;
|
||||
END
|
||||
$rcr$ LANGUAGE plpgsql;
|
||||
SQL
|
||||
|
||||
DB.exec <<~SQL
|
||||
CREATE TRIGGER post_replies_reply_id_sync
|
||||
BEFORE INSERT OR UPDATE OF reply_id ON post_replies
|
||||
FOR EACH ROW
|
||||
WHEN (NEW.reply_id IS NOT NULL)
|
||||
EXECUTE PROCEDURE post_replies_sync_reply_id();
|
||||
SQL
|
||||
|
||||
# one more sync because we could be missing some data from the time between the
|
||||
# "20200116140132_rename_reply_id_column" migration and now
|
||||
execute <<~SQL
|
||||
UPDATE post_replies
|
||||
SET reply_post_id = reply_id
|
||||
WHERE reply_post_id IS NULL
|
||||
SQL
|
||||
end
|
||||
|
||||
def down
|
||||
raise ActiveRecord::IrreversibleMigration
|
||||
end
|
||||
end
|
|
@ -0,0 +1,12 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class MakePostReplyIdColumnReadOnly < ActiveRecord::Migration[6.0]
|
||||
def up
|
||||
Migration::ColumnDropper.mark_readonly(:post_replies, :reply_id)
|
||||
DB.exec("DROP FUNCTION IF EXISTS post_replies_sync_reply_id() CASCADE")
|
||||
end
|
||||
|
||||
def down
|
||||
raise ActiveRecord::IrreversibleMigration
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue