46 lines
1.6 KiB
Ruby
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
|