Module: SpreeCmCommissioner::RouteOrderCountable

Defined in:
app/models/concerns/spree_cm_commissioner/route_order_countable.rb

Instance Method Summary collapse

Instance Method Details

#increment_route_fulfilled_order_countObject



7
8
9
10
11
# File 'app/models/concerns/spree_cm_commissioner/route_order_countable.rb', line 7

def increment_route_fulfilled_order_count
  return unless should_update_count?

  SpreeCmCommissioner::Transit::RouteFulfilledOrderCountIncrementerJob.perform_later(order_id: id)
end

#increment_route_order_countObject



13
14
15
16
17
# File 'app/models/concerns/spree_cm_commissioner/route_order_countable.rb', line 13

def increment_route_order_count
  return unless should_update_count?

  SpreeCmCommissioner::Transit::RouteOrderCountIncrementerJob.perform_later(order_id: id)
end

#preload_trip_idsObject



26
27
28
# File 'app/models/concerns/spree_cm_commissioner/route_order_countable.rb', line 26

def preload_trip_ids
  &.fetch('preload_trip_ids', []) || []
end

#preload_trip_ids=(preload_trip_ids = []) ⇒ Object

Calling ‘.trip_ids` directly can cause many slow database queries (N+1 problem) every time `.should_update_trip_ids?` or `.preload_trip_ids` runs. To avoid this, we store a precomputed list of trip IDs in `private_metadata`.



22
23
24
# File 'app/models/concerns/spree_cm_commissioner/route_order_countable.rb', line 22

def preload_trip_ids=(preload_trip_ids = [])
  self. = ( || {}).merge('preload_trip_ids' => preload_trip_ids)
end

#should_update_count?Boolean

Returns:

  • (Boolean)


3
4
5
# File 'app/models/concerns/spree_cm_commissioner/route_order_countable.rb', line 3

def should_update_count?
  preload_trip_ids.any?
end