How many map apps have a saved screenshot?
AppInfo.where('screenshot_updated_at > content_updated_at').joins(:app).where("apps.app_type = 'map'").size
Compare to how many apps have last_viewed_at in past day: App.where(app_type:'map').where('last_viewed_at > ?',1.day.ago).size
How to batch update map timestamps without timeouts.
App.includes(:app_info).where(app_type: 'map').where('last_viewed_at >= ?', 5.days.ago).find_in_batches(batch_size: 500).with_index do |apps, batch|
puts "Updating timestamp for batch #{batch}, with Apps count #{apps.count}"
puts "="*50
apps.each do |app|
info = app.app_info
if info.try(:screenshot).present? && (info.try(:content_updated_at).blank? || info.try(:screenshot_updated_at).blank?)
info.update(content_updated_at: app.updated_at, screenshot_updated_at: app.updated_at + 5.minutes)
puts "App Info for App with ID #{app.id} updated!"
end
end
end
How to run migration for missing map apps?
App.includes(:app_info).where(app_type: 'map').where('last_viewed_at >= ?', 5.days.ago).find_in_batches(batch_size: 200).with_index do |apps, batch|
wait = (batch * 2 + 5).minutes
apps.each do |app|
if app.app_info.try(:screenshot).blank?
Apps::ScreenshotWorker.perform_in(wait, app.id)
end
end
end