diff --git a/app/models/carto/visualization_backup.rb b/app/models/carto/visualization_backup.rb index 750550f90425..3c2b9bd76eb4 100644 --- a/app/models/carto/visualization_backup.rb +++ b/app/models/carto/visualization_backup.rb @@ -5,12 +5,14 @@ module Carto class VisualizationBackup < ActiveRecord::Base - # @param String username - # @param Uuid visualization - # @param String export_vizjson - # @param DateTime created_at (Self-generated) + # @param String username + # @param Uuid visualization + # @param String export_vizjson + # @param DateTime created_at (Self-generated) - validates :username, :visualization, :export_vizjson, presence: true + set_primary_key "visualization" + + validates :username, :visualization, :export_vizjson, presence: true end end diff --git a/app/services/carto/visualizations_export_service.rb b/app/services/carto/visualizations_export_service.rb index 0560273cd00a..9a506b5ce7a3 100644 --- a/app/services/carto/visualizations_export_service.rb +++ b/app/services/carto/visualizations_export_service.rb @@ -30,13 +30,30 @@ def export(visualization_id) visualization: visualization.id, export_vizjson: data ) - backup_entry.save true end def import(visualization_id) + restore_result = restore(visualization_id) + remove_backup(visualization_id) if restore_result + true + end + + private + + def remove_backup(visualization_id) + backup_item = Carto::VisualizationBackup.where(visualization: visualization_id).first + if backup_item + backup_item.destroy + true + else + false + end + end + + def restore(visualization_id) # TODO: support partial restores visualization = Carto::Visualization.where(id: visualization_id).first raise "Visualization with id #{visualization_id} already exists!" if visualization @@ -70,8 +87,6 @@ def import(visualization_id) true end - private - def create_map_and_base_layer(user) base_layer = CartoDB::Factories::LayerFactory.get_default_base_layer(user) map = CartoDB::Factories::MapFactory.get_map(base_layer, user.id)