Split custom filter migration script using the post-deployment migration system

There were some concerns with the custom filter migration script dropping a table,
thus making it unsafe to run in a zero-downtime setting. Upstream introduced
a way to run migrations after deployment, so revisit the old migration script to
make use of this.
shrike
Thibaut Girka 2018-08-13 18:17:48 +02:00 committed by ThibG
parent 494eaab5b1
commit 80148d8edd
3 changed files with 22 additions and 11 deletions

View File

@ -29,12 +29,11 @@ class MigrateFilters < ActiveRecord::Migration[5.2]
whole_word: filter.whole_word, whole_word: filter.whole_word,
irreversible: true) irreversible: true)
end end
drop_table :glitch_keyword_mutes
end end
def down def down
create_table "glitch_keyword_mutes" do |t| unless table_exists? :glitch_keyword_mutes
create_table :glitch_keyword_mutes do |t|
t.references :account, null: false t.references :account, null: false
t.string :keyword, null: false t.string :keyword, null: false
t.boolean :whole_word, default: true, null: false t.boolean :whole_word, default: true, null: false
@ -43,6 +42,7 @@ class MigrateFilters < ActiveRecord::Migration[5.2]
end end
add_foreign_key :glitch_keyword_mutes, :accounts, on_delete: :cascade add_foreign_key :glitch_keyword_mutes, :accounts, on_delete: :cascade
end
CustomFilter.where(irreversible: true).find_each do |filter| CustomFilter.where(irreversible: true).find_each do |filter|
GlitchKeywordMute.where(account: filter.account).create!( GlitchKeywordMute.where(account: filter.account).create!(

View File

@ -0,0 +1,11 @@
class PostMigrateFilters < ActiveRecord::Migration[5.2]
disable_ddl_transaction!
def up
drop_table :glitch_keyword_mutes if table_exists? :glitch_keyword_mutes
end
def down
end
end

View File

@ -10,7 +10,7 @@
# #
# It's strongly recommended that you check this file into your version control system. # It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 2018_08_12_123222) do ActiveRecord::Schema.define(version: 2018_08_13_160548) do
# These are extensions that must be enabled in order to support this database # These are extensions that must be enabled in order to support this database
enable_extension "plpgsql" enable_extension "plpgsql"