Refactor after code review

pull/16370/head
Moisés Calzado 3 years ago
parent e51ea11e9c
commit 82dd384a79

@ -1,50 +1,42 @@
namespace :cartodb do namespace :cartodb do
namespace :user do namespace :user do
desc 'Change user username' desc 'Change user username'
task :change_username, [:old_username, :new_username] => :environment do |_task, args| task :change_username, [:old_username, :new_username] => :environment do |_task, args|
raise "You must pass an existing username, and a new username for the existing user" unless args[:old_username] && args[:new_username] raise "You must pass an existing username, and a new username for the existing user" unless args[:old_username] && args[:new_username]
user = User.find(username: args[:old_username]) user = User.find(username: args[:old_username])
raise "User with username #{args[:old_username]} doesn't exist!" unless user raise "User with username #{args[:old_username]} doesn't exist!" unless user
# Update username and database_schema # Update username and database_schema
user.username = args[:new_username] user.username = args[:new_username]
user.database_schema = args[:new_username] user.database_schema = args[:new_username]
user.save user.save
# Update Redis metadata # Update Redis metadata
user.save_metadata user.save_metadata
# Rename user and database schema # Rename user and database schema
user.in_database({as: :superuser}) do |db| user.in_database(as: :superuser) { |db|
db.run("ALTER SCHEMA \"#{args[:old_username]}\" RENAME TO \"#{args[:new_username]}\";") db.run("ALTER SCHEMA \"#{args[:old_username]}\" RENAME TO \"#{args[:new_username]}\";")
end }
# Regenerate API Keys # Regenerate API Keys
user.carto_user.api_keys.each { |api_key| user.carto_user.api_keys.find(&:master?).try(:regenerate_token!)
if api_key.master?
api_key.regenerate_token!
end
}
# Fix map analysis # Fix map analysis
user.carto_user.tables.each do |table| user.carto_user.tables.each do |table|
table.dependent_visualizations.each do |visualization| table.dependent_visualizations.each do |visualization|
visualization.analyses.each do |analysis| visualization.analyses.each do |analysis|
analysis.update_table_name( analysis.update_table_name(
"#{args[:old_username]}.#{table.name}", "#{args[:old_username]}.#{table.name}",
"\"#{args[:new_username]}\".#{table.name}" "\"#{args[:new_username]}\".#{table.name}"
) )
end
end end
end end
# Fix public maps
Carto::Visualization.where(type: 'derived', user: user.carto_user).each { |visualization|
if visualization.published?
visualization.create_mapcap!
end
}
end end
# Fix public maps
Carto::Visualization.where(type: 'derived', user: user.carto_user).select(&:published?).each { |visualization| visualization.create_mapcap! }
end
end end
end end

Loading…
Cancel
Save