Backup visualizations before deletion

pull/15832/head
Alberto Miedes Garcés 4 years ago
parent 8315bdfc77
commit 891614b151

@ -29,6 +29,7 @@ Development
* Delete unused DataImport methods [#15833](https://github.com/CartoDB/cartodb/pull/15833)
* Fix missing LoggerHelper in CartoDB::LayerModule::Presenter [#15829](https://github.com/CartoDB/cartodb/pull/15829)
* Release Data Observatory subscriptions [#15834](https://github.com/CartoDB/cartodb/pull/15834)
* Fix map backups when deleting tables via Ghost Tables [#15832](https://github.com/CartoDB/cartodb/pull/15832)
4.41.1 (2020-09-03)
-------------------

@ -46,6 +46,7 @@ class Table
def_delegators :relator, *CartoDB::TableRelator::INTERFACE
def_delegators :@user_table, *::UserTable::INTERFACE
attr_accessor :user_table
def initialize(args = {})
if args[:user_table].nil?
@ -1215,6 +1216,10 @@ class Table
self.class.sanitize_columns(table_name, column_sanitization_version, options)
end
def visualizations
Carto::Visualization.where(id: user_table.affected_visualizations.map(&:id))
end
private
def valid_cartodb_id_candidate?(col_name)

@ -263,6 +263,8 @@ module Carto
return unless user_table_to_drop # The table has already been deleted
table_to_drop = ::Table.new(user_table: user_table_to_drop)
table_to_drop.visualizations.map(&:backup_visualization)
table_to_drop.keep_user_database_table = true
table_to_drop.destroy
rescue StandardError => exception

@ -15,6 +15,8 @@ module Carto
Rails.logger.expects(:error).never
end
after { Carto::User.destroy_all }
def run_in_user_database(query)
sequel_user.in_database.run(query)
end
@ -427,5 +429,16 @@ module Carto
user.tables.count.should eq 0
ghost_tables_manager.instance_eval { fetch_user_tables_synced_with_db? }.should be_true
end
it 'should backup visualizations before dropping a table' do
user_table = create(:carto_user_table, :full, user: user)
expect(Carto::VisualizationBackup.count).to eq(0)
run_in_user_database("ALTER TABLE #{user_table.name} DROP COLUMN cartodb_id")
ghost_tables_manager.link_ghost_tables_synchronously
expect(Carto::VisualizationBackup.count).to eq(1)
end
end
end

Loading…
Cancel
Save