cartodb-4.29/lib/tasks/map_views.rake
2020-06-15 10:58:47 +08:00

46 lines
1.6 KiB
Ruby

namespace :cartodb do
namespace :users do
desc 'Get map views from remote service for every user'
task :update_remote_map_views => :environment do
puts "Updating local map views cache for every user..."
::User.all.each do |u|
print " - Update #{u.username}"
u.set_old_api_calls # updates map views stats older than 3 hours
print " OK\n"
end
end
end
namespace :mapviews do
desc 'Get the sum of all the torque mapviews'
task :torque_total => :environment do
total_torque_mapviews = 0
total_visualizations = 0
offset = 0
stats_manager = CartoDB::Stats::APICalls.new
while (torque_vis = SequelRails.connection.fetch(get_torque_visualization(offset, 1000)).all).length > 0
torque_vis.each do |vis|
total_visualizations += 1
total_torque_mapviews += get_total_vis_mapviews(vis, stats_manager)
end
offset += torque_vis.length
end
puts "Total torque mapviews: #{total_torque_mapviews}"
puts "Total visualizations with torque layers: #{total_visualizations}"
end
def get_torque_visualization(offset, pagesize)
%[SELECT v.id, u.username FROM visualizations v
INNER JOIN users u ON v.user_id = u.id
INNER JOIN layers_maps lm ON v.map_id = lm.map_id
INNER JOIN layers l ON lm.layer_id = l.id
WHERE l.kind = 'torque'
LIMIT #{pagesize} OFFSET #{offset}]
end
def get_total_vis_mapviews(visualization, stats_manager)
stats_manager.get_total_api_calls_from_redis(visualization[:username], visualization[:id])
end
end
end