58 lines
1.7 KiB
Ruby
58 lines
1.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
namespace :events do
|
|
desc "Backfill network intelligence data for events"
|
|
task backfill_network_intelligence: :environment do
|
|
batch_size = ENV['BATCH_SIZE']&.to_i || 10_000
|
|
Event.backfill_network_intelligence!(batch_size: batch_size)
|
|
end
|
|
|
|
desc "Backfill events with missing network intelligence (newly imported network data)"
|
|
task backfill_missing: :environment do
|
|
count = Event.where(country: nil).count
|
|
|
|
if count.zero?
|
|
puts "✓ No events missing network intelligence"
|
|
else
|
|
puts "Found #{count} events without network intelligence"
|
|
puts "Backfilling..."
|
|
|
|
processed = 0
|
|
Event.where(country: nil).find_in_batches(batch_size: 1000) do |batch|
|
|
batch.each(&:save)
|
|
processed += batch.size
|
|
puts " Processed #{processed}/#{count}"
|
|
end
|
|
|
|
puts "✓ Complete"
|
|
end
|
|
end
|
|
|
|
desc "Show backfill progress"
|
|
task backfill_progress: :environment do
|
|
total = Event.count
|
|
with_country = Event.where.not(country: nil).count
|
|
without_country = Event.where(country: nil).count
|
|
percent = (with_country.to_f / total * 100).round(1)
|
|
|
|
puts "=" * 60
|
|
puts "Network Intelligence Backfill Progress"
|
|
puts "=" * 60
|
|
puts "Total events: #{total}"
|
|
puts "With network data: #{with_country} (#{percent}%)"
|
|
puts "Missing network data: #{without_country}"
|
|
puts "=" * 60
|
|
|
|
if without_country > 0
|
|
puts
|
|
puts "To continue backfill:"
|
|
puts " rails events:backfill_network_intelligence"
|
|
puts
|
|
puts "Or with custom batch size:"
|
|
puts " BATCH_SIZE=5000 rails events:backfill_network_intelligence"
|
|
else
|
|
puts "✓ Backfill complete!"
|
|
end
|
|
end
|
|
end
|