Class: SolidusImportProducts::Import

Inherits:
Object
  • Object
show all
Defined in:
app/services/solidus_import_products/import.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(args = { product_imports: nil }) ⇒ Import

Returns a new instance of Import.



5
6
7
8
# File 'app/services/solidus_import_products/import.rb', line 5

def initialize(args = { product_imports: nil })
  self.product_imports = args[:product_imports]
  self.logger = SolidusImportProducts::Logger.instance
end

Instance Attribute Details

#loggerObject

Returns the value of attribute logger.



3
4
5
# File 'app/services/solidus_import_products/import.rb', line 3

def logger
  @logger
end

#product_importsObject

Returns the value of attribute product_imports.



3
4
5
# File 'app/services/solidus_import_products/import.rb', line 3

def product_imports
  @product_imports
end

Class Method Details

.call(options = {}) ⇒ Object



10
11
12
# File 'app/services/solidus_import_products/import.rb', line 10

def self.call(options = {})
  new(options).call
end

Instance Method Details

#callObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'app/services/solidus_import_products/import.rb', line 14

def call
  skus_of_products_before_import = Spree::Product.all.map(&:sku)
  parser = product_imports.parse
  col = parser.column_mappings

  product_imports.start
  ActiveRecord::Base.transaction do
    parser.data_rows.each do |row|
      SolidusImportProducts::ProcessRow.call(
        parser: parser,
        product_imports: product_imports,
        row: row,
        col: col,
        skus_of_products_before_import: skus_of_products_before_import
      )
    end
  end

  product_imports.complete
rescue SolidusImportProducts::Exception::Base => e
  product_imports.failure!
  raise e
end