Project

General

Profile

Download (1.38 KB) Statistics
| Branch: | Tag: | Revision:
fe4629de rbirnie
namespace :trends do
desc 'Create Trend counts'
task :counter => :environment do
TrendImporter.update!
end
0d264ea7 Robert Birnie
8e567e22 Shimon Shtein
desc 'Reduces amount of points for each trend group'
task :reduce => :environment do
c30fd6f2 Lukas Zapletal
start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
8e567e22 Shimon Shtein
trends = Trend.pluck(:id)
trends_count = trends.length
current_record = 0

trends.each do |trend_id|
251eb689 Tom Caspy
puts "Working on trend_id #{trend_id}, #{(current_record += 1)} of #{trends_count}" unless Rails.env.test?
8e567e22 Shimon Shtein
current_interval = TrendCounter.where(trend_id: trend_id).order(:created_at).first
next if current_interval.nil?

current_interval.interval_start = current_interval.created_at
0564618b Tomer Brisker
while (next_interval = TrendCounter.where(trend_id: trend_id)
.where("created_at > ? and count <> ?", current_interval.created_at, current_interval.count)
.order(:created_at).first)
8e567e22 Shimon Shtein
current_interval.interval_end = next_interval.created_at
current_interval.save!
current_interval = next_interval
current_interval.interval_start = current_interval.created_at
end
current_interval.save!
end

TrendCounter.unscoped.where(interval_start: nil).delete_all

c30fd6f2 Lukas Zapletal
puts "It took #{Process.clock_gettime(Process::CLOCK_MONOTONIC) - start} seconds to complete" unless Rails.env.test?
8e567e22 Shimon Shtein
end
0d264ea7 Robert Birnie
end