Sha256: 2805df7164a953df78cd39eed44dace5f21a1741aea1a67b0e0fba0daa9a159f

Contents?: true

Size: 1.91 KB

Versions: 39

Compression:

Stored size: 1.91 KB

Contents

require 'active_support/testing/time_helpers'

module Workarea
  class InsightsSeeds
    include ActiveSupport::Testing::TimeHelpers

    def perform
      puts 'Adding insights...'

      add_views
      add_searches
      add_orders

      process
    end

    def add_views
      Catalog::Product.limit(100).pluck(:id).each do |id|
        12.times do |weeks|
          travel_to weeks.weeks.ago
          rand(10).times { Metrics::ProductByDay.inc(key: { product_id: id }, views: 10) }
          travel_back
        end
      end

      Catalog::Category.limit(100).pluck(:id).each do |id|
        12.times do |weeks|
          travel_to weeks.weeks.ago
          rand(10).times { Metrics::CategoryByDay.inc(key: { category_id: id }, views: 10) }
          travel_back
        end
      end
    end

    def add_searches
      terms = Catalog::Product
        .asc(:name)
        .limit(20)
        .flat_map { |product| product.name.split(' ') }
        .uniq

      terms.each do |term|
        12.times do |weeks|
          travel_to weeks.weeks.ago

          rand(3).times { Metrics::SearchByDay.save_search(term, 0) }
          rand(3).times do
            Metrics::SearchByDay.save_search(term, rand(100))
          end

          travel_back
        end
      end
    end

    def add_orders
      Order.all.each_by(1000) { |order| SaveOrderMetrics.perform(order) }
    end

    def process
      add_previous_week_insights
      add_previous_month_insights

      ProcessProductRecommendations.new.perform
      GenerateInsights.generate_all!
    end

    def add_previous_week_insights
      (1...12).each do |weeks|
        travel_to weeks.weeks.ago

        GenerateInsights.generate_weekly_insights

        travel_back
      end
    end

    def add_previous_month_insights
      (1...3).each do |months|
        travel_to months.months.ago

        GenerateInsights.generate_monthly_insights

        travel_back
      end
    end
  end
end

Version data entries

39 entries across 39 versions & 1 rubygems

Version Path
workarea-core-3.5.27 app/seeds/workarea/insights_seeds.rb
workarea-core-3.5.26 app/seeds/workarea/insights_seeds.rb
workarea-core-3.4.45 app/seeds/workarea/insights_seeds.rb
workarea-core-3.5.25 app/seeds/workarea/insights_seeds.rb
workarea-core-3.5.23 app/seeds/workarea/insights_seeds.rb
workarea-core-3.4.44 app/seeds/workarea/insights_seeds.rb
workarea-core-3.5.22 app/seeds/workarea/insights_seeds.rb
workarea-core-3.4.43 app/seeds/workarea/insights_seeds.rb
workarea-core-3.5.21 app/seeds/workarea/insights_seeds.rb
workarea-core-3.4.42 app/seeds/workarea/insights_seeds.rb
workarea-core-3.5.20 app/seeds/workarea/insights_seeds.rb
workarea-core-3.4.41 app/seeds/workarea/insights_seeds.rb
workarea-core-3.5.19 app/seeds/workarea/insights_seeds.rb
workarea-core-3.4.40 app/seeds/workarea/insights_seeds.rb
workarea-core-3.5.18 app/seeds/workarea/insights_seeds.rb
workarea-core-3.4.39 app/seeds/workarea/insights_seeds.rb
workarea-core-3.5.17 app/seeds/workarea/insights_seeds.rb
workarea-core-3.4.38 app/seeds/workarea/insights_seeds.rb
workarea-core-3.5.16 app/seeds/workarea/insights_seeds.rb
workarea-core-3.4.37 app/seeds/workarea/insights_seeds.rb