Class: Workarea::SaveOrderMetrics
- Inherits:
-
Object
- Object
- Workarea::SaveOrderMetrics
- Includes:
- Sidekiq::CallbacksWorker, Sidekiq::Worker
- Defined in:
- app/workers/workarea/save_order_metrics.rb
Class Method Summary collapse
- .perform(order) ⇒ Object
- .save_catalog(metrics) ⇒ Object
- .save_pricing(metrics) ⇒ Object
- .save_sales(metrics) ⇒ Object
- .save_traffic(metrics) ⇒ Object
- .save_user(metrics) ⇒ Object
Instance Method Summary collapse
Class Method Details
.perform(order) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 |
# File 'app/workers/workarea/save_order_metrics.rb', line 9 def perform(order) return if order.metrics_saved? metrics = OrderMetrics.new(order) save_sales(metrics) save_user(metrics) save_catalog(metrics) save_traffic(metrics) save_pricing(metrics) order.metrics_saved! end |
.save_catalog(metrics) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'app/workers/workarea/save_order_metrics.rb', line 35 def save_catalog(metrics) metrics.products.each do |product_id, data| Metrics::ProductByDay.inc( key: { product_id: product_id }, at: metrics.placed_at, **data ) end metrics.categories.each do |category_id, data| Metrics::CategoryByDay.inc( key: { category_id: category_id }, at: metrics.placed_at, **data ) end metrics.skus.each do |sku, data| Metrics::SkuByDay.inc( key: { sku: sku }, at: metrics.placed_at, **data ) end end |
.save_pricing(metrics) ⇒ Object
90 91 92 93 94 95 96 97 98 |
# File 'app/workers/workarea/save_order_metrics.rb', line 90 def save_pricing(metrics) metrics.discounts.each do |discount_id, data| Metrics::DiscountByDay.inc( key: { discount_id: discount_id }, at: metrics.placed_at, **data ) end end |
.save_sales(metrics) ⇒ Object
22 23 24 |
# File 'app/workers/workarea/save_order_metrics.rb', line 22 def save_sales(metrics) Metrics::SalesByDay.inc(at: metrics.placed_at, **metrics.sales_data) end |
.save_traffic(metrics) ⇒ Object
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'app/workers/workarea/save_order_metrics.rb', line 61 def save_traffic(metrics) if metrics.country.present? Metrics::CountryByDay.inc( key: { country: metrics.country }, at: metrics.placed_at, **metrics.sales_data ) end metrics.searches.each do |query_id, data| Metrics::SearchByDay.inc( key: { query_id: query_id }, at: metrics.placed_at, **metrics.sales_data ) end if metrics.traffic_referrer.present? Metrics::TrafficReferrerByDay.inc( key: { medium: metrics.traffic_referrer.medium, source: metrics.traffic_referrer.source }, at: metrics.placed_at, **metrics.sales_data ) end end |
.save_user(metrics) ⇒ Object
26 27 28 29 30 31 32 33 |
# File 'app/workers/workarea/save_order_metrics.rb', line 26 def save_user(metrics) Metrics::User.save_order( email: metrics.email, revenue: metrics.total_price, discounts: metrics.sales_data[:discounts], at: metrics.placed_at ) end |
Instance Method Details
#perform(order_id) ⇒ Object
101 102 103 |
# File 'app/workers/workarea/save_order_metrics.rb', line 101 def perform(order_id) self.class.perform(Order.find(order_id)) end |