Class: SpreeCmCommissioner::RedisStock::LineItemsCachedInventoryItemsBuilder

Inherits:
Object
  • Object
show all
Defined in:
app/models/spree_cm_commissioner/redis_stock/line_items_cached_inventory_items_builder.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(line_item_ids:) ⇒ LineItemsCachedInventoryItemsBuilder

Returns a new instance of LineItemsCachedInventoryItemsBuilder.



6
7
8
# File 'app/models/spree_cm_commissioner/redis_stock/line_items_cached_inventory_items_builder.rb', line 6

def initialize(line_item_ids:)
  @line_item_ids = line_item_ids
end

Instance Attribute Details

#line_item_idsObject (readonly)

Returns the value of attribute line_item_ids.



4
5
6
# File 'app/models/spree_cm_commissioner/redis_stock/line_items_cached_inventory_items_builder.rb', line 4

def line_item_ids
  @line_item_ids
end

Instance Method Details

#cached_inventory_itemsObject



22
23
24
25
# File 'app/models/spree_cm_commissioner/redis_stock/line_items_cached_inventory_items_builder.rb', line 22

def cached_inventory_items
  @cached_inventory_items ||= SpreeCmCommissioner::RedisStock::CachedInventoryItemsBuilder.new(inventory_items)
                                                                                          .call
end

#callObject

return list of inventory items group by :line_item_id:

1: [ CachedInventoryItem(...), CachedInventoryItem(...) ],
2: [ CachedInventoryItem(...), CachedInventoryItem(...) ],



15
16
17
18
19
20
# File 'app/models/spree_cm_commissioner/redis_stock/line_items_cached_inventory_items_builder.rb', line 15

def call
  cached_inventory_items.group_by do |cached_inventory_item|
    line_item = line_items.find { |item| item.variant_id == cached_inventory_item.variant_id }
    line_item.id
  end
end

#inventory_itemsObject



27
28
29
# File 'app/models/spree_cm_commissioner/redis_stock/line_items_cached_inventory_items_builder.rb', line 27

def inventory_items
  @inventory_items ||= line_items.flat_map(&:inventory_items)
end

#line_itemsObject



31
32
33
# File 'app/models/spree_cm_commissioner/redis_stock/line_items_cached_inventory_items_builder.rb', line 31

def line_items
  @line_items ||= Spree::LineItem.where(id: line_item_ids).includes(:inventory_items)
end