Module: TinyBuilder::DataLoader
- Defined in:
- lib/tiny_builder/data_loader.rb
Instance Method Summary collapse
- #account_id ⇒ Object
- #associated_listings ⇒ Object
- #associated_stock_allocations ⇒ Object
- #associated_stock_allocs(listing) ⇒ Object
- #collect_associated_listings ⇒ Object
- #collect_variants_data ⇒ Object
- #listing_warehouse_spaces(listing) ⇒ Object
- #mapped_data ⇒ Object
- #mapped_wh_mappings ⇒ Object
- #stock_alloc(listing) ⇒ Object
- #stock_allocations ⇒ Object
- #variant_ids ⇒ Object
- #variants ⇒ Object
- #warehouse_mapping ⇒ Object
- #warehouse_mappings ⇒ Object
- #warehouse_spaces ⇒ Object
Instance Method Details
#account_id ⇒ Object
24 25 26 |
# File 'lib/tiny_builder/data_loader.rb', line 24 def account_id listings[0]&.account_id end |
#associated_listings ⇒ Object
42 43 44 |
# File 'lib/tiny_builder/data_loader.rb', line 42 def associated_listings @associated_listings ||= collect_associated_listings end |
#associated_stock_allocations ⇒ Object
60 61 62 63 64 |
# File 'lib/tiny_builder/data_loader.rb', line 60 def associated_stock_allocations @associated_stock_allocations ||= VariantListingStockAllocation.where( variant_association_id: associated_listings.map(&:icava_id) ).where('end_at >= NOW()') end |
#associated_stock_allocs(listing) ⇒ Object
92 93 94 95 96 97 98 99 |
# File 'lib/tiny_builder/data_loader.rb', line 92 def associated_stock_allocs(listing) ids = associated_listings.select{ |l| l.master_variant_id == listing.maaster_variant_id }.map(&:icava_id) associated_stock_allocations.map do |asa| if ids.include?(asa) asa end end.compact end |
#collect_associated_listings ⇒ Object
46 47 48 49 50 51 52 |
# File 'lib/tiny_builder/data_loader.rb', line 46 def collect_associated_listings data = [] MongoVariantListing.in(master_variant_id: variant_ids).each do |listing| data << listing end data end |
#collect_variants_data ⇒ Object
11 12 13 14 15 16 17 18 |
# File 'lib/tiny_builder/data_loader.rb', line 11 def collect_variants_data data = Variant.where( id: listings.map(&:master_variant_id) ) listings.map do |listing| [listing.icava_id, data.find{ |v| v.id == listing.master_variant_id }] end end |
#listing_warehouse_spaces(listing) ⇒ Object
70 71 72 |
# File 'lib/tiny_builder/data_loader.rb', line 70 def listing_warehouse_spaces(listing) warehouse_spaces.select{ |wh_space| wh_space.item_variant_id == listing.master_variant_id } end |
#mapped_data ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/tiny_builder/data_loader.rb', line 74 def mapped_data @mapped_data ||= listings.map do |listing| [ listing.icava_id, { variant: variants.find{ |v| v.id == listing.master_variant_id }, warehouse_spaces: listing_warehouse_spaces(listing), stock_alloc: stock_alloc(listing), associated_stock_allocs: associated_stock_allocs(listing) } ] end.to_h end |
#mapped_wh_mappings ⇒ Object
38 39 40 |
# File 'lib/tiny_builder/data_loader.rb', line 38 def mapped_wh_mappings @mapped_wh_mappings ||= warehouse_mappings.select(:warehouse_id, :channel_warehouse_id).to_h end |
#stock_alloc(listing) ⇒ Object
88 89 90 |
# File 'lib/tiny_builder/data_loader.rb', line 88 def stock_alloc(listing) stock_allocations.find{ |sa| sa.variant_association_id == listing.icava_id } end |
#stock_allocations ⇒ Object
54 55 56 57 58 |
# File 'lib/tiny_builder/data_loader.rb', line 54 def stock_allocations @stock_allocations ||= VariantListingStockAllocation.where( variant_association_id: listing_ids ).where('end_at >= NOW()') end |
#variant_ids ⇒ Object
20 21 22 |
# File 'lib/tiny_builder/data_loader.rb', line 20 def variant_ids @variant_ids ||= variants.map(&:id) end |
#variants ⇒ Object
5 6 7 8 9 |
# File 'lib/tiny_builder/data_loader.rb', line 5 def variants @variants ||= Variant.where( id: listings.map(&:master_variant_id) ) end |
#warehouse_mapping ⇒ Object
34 35 36 |
# File 'lib/tiny_builder/data_loader.rb', line 34 def warehouse_mapping warehouse_mapping ||= warehouse_mappings.first end |
#warehouse_mappings ⇒ Object
28 29 30 31 32 |
# File 'lib/tiny_builder/data_loader.rb', line 28 def warehouse_mappings @warehouse_mappings ||= WarehouseMapping.joins(:warehouse).where( profile_channel_association_id: account_id ).where(warehouses: {consignment: false}) end |
#warehouse_spaces ⇒ Object
66 67 68 |
# File 'lib/tiny_builder/data_loader.rb', line 66 def warehouse_spaces @warehouse_spaces ||= WarehouseSpace.where(item_variant_id: variant_ids).where.not(warehouse_id: nil) end |