mirror of
https://github.com/discourse/discourse.git
synced 2025-01-18 20:52:46 +08:00
FIX: Improve allowed_path column migration (#10321)
Because previous migration was already deployed and some databases were already migrated, I needed to add some conditions to the migration. Previous migration - https://github.com/discourse/discourse/blob/master/db/post_migrate/20200629232159_rename_path_whitelist_to_allowed_paths.rb What will happen in a scenario when previous migration was not run. 1. column allowed_paths will be created 2. allowed_path will be populated with data from path_whitelist 3. path_whitelist column will be dropped What will happen in a scenario when previous migration was already run. 1. column allowed_paths will not be created because already exists - `unless column_exists?(:embeddable_hosts, :allowed_paths)` 2. Data will not be copied because path_whitelist is missing - `if column_exists?(:embeddable_hosts, :path_whitelist) && column_exists?(:embeddable_hosts, :allowed_paths)` 3. path_whitelist column deletion will be skipped - `if column_exists?(:embeddable_hosts, :path_whitelist)`
This commit is contained in:
parent
1ad270965c
commit
14003abc37
|
@ -0,0 +1,24 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class DuplicateAllowedPathsFromPathWhitelist < ActiveRecord::Migration[6.0]
|
||||
def up
|
||||
unless column_exists?(:embeddable_hosts, :allowed_paths)
|
||||
add_column :embeddable_hosts, :allowed_paths, :string
|
||||
end
|
||||
|
||||
if column_exists?(:embeddable_hosts, :path_whitelist)
|
||||
Migration::ColumnDropper.mark_readonly('embeddable_hosts', 'path_whitelist')
|
||||
|
||||
if column_exists?(:embeddable_hosts, :allowed_paths)
|
||||
DB.exec <<~SQL
|
||||
UPDATE embeddable_hosts
|
||||
SET allowed_paths = path_whitelist
|
||||
SQL
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def down
|
||||
remove_column :embeddable_hosts, :allowed_paths
|
||||
end
|
||||
end
|
|
@ -1,7 +0,0 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class RenamePathWhitelistToAllowedPaths < ActiveRecord::Migration[6.0]
|
||||
def change
|
||||
rename_column :embeddable_hosts, :path_whitelist, :allowed_paths
|
||||
end
|
||||
end
|
|
@ -0,0 +1,17 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class DropPathWhitelistFromEmbeddableHosts < ActiveRecord::Migration[6.0]
|
||||
DROPPED_COLUMNS ||= {
|
||||
embeddable_hosts: %i{path_whitelist}
|
||||
}
|
||||
|
||||
def up
|
||||
DROPPED_COLUMNS.each do |table, columns|
|
||||
Migration::ColumnDropper.execute_drop(table, columns)
|
||||
end
|
||||
end
|
||||
|
||||
def down
|
||||
add_column :embeddable_hosts, :path_whitelist, :string
|
||||
end
|
||||
end
|
Loading…
Reference in New Issue
Block a user