Compare commits

...

8 Commits

@ -569,6 +569,7 @@ ion for time-series (#12670)
* Use redis secondary for heavy `KEYS *` opeartion on user export (#13814)
* Fix broken import when `ogc_fid` or `gid` have nulls (https://github.com/CartoDB/support/issues/1338)
* Allow inviting viewers for org even if regular seats are full (https://github.com/CartoDB/support/issues/1373)
* Add rake to remove duplicated table visualizations
* Fix bugs in legends (https://github.com/CartoDB/support/issues/1339, )
### Internals

@ -212,6 +212,32 @@ namespace :cartodb do
end
end
desc "Removes duplicated table visualizations"
task remove_dup_table_vizs: :environment do
query = "select
v.user_id,
v.name
from
visualizations v
right join users u on
u.id = v.user_id
group by
v.user_id,
v.name,
v.type
having
v.type = 'table' and
count(*) > 1;"
ActiveRecord::Base.connection.execute(query).each do |row|
begin
vizs = Carto::User.find(row['user_id']).visualizations.where(name: row['name']).all
vizs.sort_by(&:updated_at).slice(0..vizs.size - 2).each(&:destroy)
rescue => e
puts "Unable to delete duplicated table vizs for user with id #{row['user_id']}: #{e.inspect}"
end
end
end
private
def inconsistent?(viz)

@ -0,0 +1,47 @@
require 'spec_helper_min'
require 'rake'
require 'factories/carto_visualizations'
describe 'layers.rake' do
include Carto::Factories::Visualizations
describe '#sync_basemaps_from_app_config' do
before(:all) do
Rake.application.rake_require "tasks/viz_maintenance"
Rake::Task.define_task(:environment)
@user = FactoryGirl.create(:carto_user, private_maps_enabled: true)
end
before(:each) do
@map, @table, @table_visualization, @visualization = create_full_visualization(@user)
@map2, @table2, @table_visualization2, @visualization2 = create_full_visualization(@user)
end
after(:each) do
destroy_full_visualization(@map, @table, @table_visualization, @visualization)
destroy_full_visualization(@map2, @table2, @table_visualization2, @visualization2)
end
after(:all) do
::User[@user.id].destroy
end
it 'deletes duplicated table visualizations' do
map, table, table_visualization, visualization = create_full_visualization(@user)
table_visualization.updated_at = @table_visualization.updated_at + 1.minute
table_visualization.save(validate: false)
table_visualization.update_column(:name, @table_visualization.name)
Carto::Visualization.where(type: 'table').count.should eq 3
Rake.application['cartodb:vizs:remove_dup_table_vizs'].invoke
Carto::Visualization.where(type: 'table').count.should eq 2
Carto::Visualization.find(table_visualization.id)
Carto::Visualization.find(@table_visualization2)
expect { Carto::Visualization.find(@table_visualization.id) }.to raise_error(ActiveRecord::RecordNotFound)
destroy_full_visualization(map, table, table_visualization, visualization)
end
end
end
Loading…
Cancel
Save