FIX: Redo migrations such that tables are dropped in a safe manner (#56)
This is a reimplementation of 17b0147c which ensures the new table has the correct indexes, defaults and sequences
Co-authored-by: Alan Guo Xiang Tan <gxtan1990@gmail.com>
Co-authored-by: Daniel Waterworth <me@danielwaterworth.com>
This commit is contained in:
parent
b82b80fb22
commit
4b540f143d
|
|
@ -0,0 +1,61 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'migration/table_dropper'
|
||||
|
||||
class RenameTablesToDiscoursePostEvent < ActiveRecord::Migration[6.0]
|
||||
def up
|
||||
unless table_exists?(:discourse_post_event_events)
|
||||
Migration::TableDropper.read_only_table(:discourse_calendar_post_events)
|
||||
|
||||
execute <<~SQL
|
||||
CREATE TABLE discourse_post_event_events
|
||||
(LIKE discourse_calendar_post_events INCLUDING ALL);
|
||||
SQL
|
||||
|
||||
execute <<~SQL
|
||||
INSERT INTO discourse_post_event_events
|
||||
SELECT *
|
||||
FROM discourse_calendar_post_events
|
||||
SQL
|
||||
|
||||
execute <<~SQL
|
||||
ALTER SEQUENCE discourse_calendar_post_events_id_seq
|
||||
RENAME TO discourse_post_event_events_id_seq
|
||||
SQL
|
||||
|
||||
execute <<~SQL
|
||||
ALTER SEQUENCE discourse_post_event_events_id_seq
|
||||
OWNED BY discourse_post_event_events.id
|
||||
SQL
|
||||
end
|
||||
|
||||
unless table_exists?(:discourse_post_event_invitees)
|
||||
Migration::TableDropper.read_only_table(:discourse_calendar_invitees)
|
||||
|
||||
execute <<~SQL
|
||||
CREATE TABLE discourse_post_event_invitees
|
||||
(LIKE discourse_calendar_invitees INCLUDING ALL)
|
||||
SQL
|
||||
|
||||
execute <<~SQL
|
||||
INSERT INTO discourse_post_event_invitees
|
||||
SELECT *
|
||||
FROM discourse_calendar_invitees
|
||||
SQL
|
||||
|
||||
execute <<~SQL
|
||||
ALTER SEQUENCE discourse_calendar_invitees_id_seq
|
||||
RENAME TO discourse_post_event_invitees_id_seq
|
||||
SQL
|
||||
|
||||
execute <<~SQL
|
||||
ALTER SEQUENCE discourse_post_event_invitees_id_seq
|
||||
OWNED BY discourse_post_event_invitees.id
|
||||
SQL
|
||||
end
|
||||
end
|
||||
|
||||
def down
|
||||
raise ActiveRecord::IrreversibleMigration
|
||||
end
|
||||
end
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class RenameTablesToDiscoursePostEvent < ActiveRecord::Migration[6.0]
|
||||
def up
|
||||
rename_table :discourse_calendar_post_events, :discourse_post_event_events
|
||||
rename_table :discourse_calendar_invitees, :discourse_post_event_invitees
|
||||
end
|
||||
|
||||
def down
|
||||
rename_table :discourse_post_event_events, :discourse_calendar_post_events
|
||||
rename_table :discourse_post_event_invitees, :discourse_calendar_invitees
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require 'migration/table_dropper'
|
||||
|
||||
class DropOldDiscourseCalendarTables < ActiveRecord::Migration[6.0]
|
||||
def up
|
||||
if table_exists?(:discourse_calendar_post_events)
|
||||
Migration::TableDropper.execute_drop(:discourse_calendar_post_events)
|
||||
end
|
||||
|
||||
if table_exists?(:discourse_calendar_invitees)
|
||||
Migration::TableDropper.execute_drop(:discourse_calendar_invitees)
|
||||
end
|
||||
end
|
||||
|
||||
def down
|
||||
raise ActiveRecord::IrrelversibleMigration
|
||||
end
|
||||
end
|
||||
Loading…
Reference in New Issue