Class: Panda::Core::CSVImportService

Inherits:
Object
  • Object
show all
Defined in:
app/services/panda/core/csv_import_service.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(import_session) ⇒ CSVImportService

Returns a new instance of CSVImportService.



8
9
10
# File 'app/services/panda/core/csv_import_service.rb', line 8

def initialize(import_session)
  @import_session = import_session
end

Instance Attribute Details

#import_sessionObject (readonly)

Returns the value of attribute import_session.



6
7
8
# File 'app/services/panda/core/csv_import_service.rb', line 6

def import_session
  @import_session
end

Instance Method Details

#callObject



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'app/services/panda/core/csv_import_service.rb', line 12

def call
  import_session.update!(status: "importing", started_at: Time.current)
  rows = import_session.file_rows
  import_session.update!(total_rows: rows.size)

  klass = import_session.importable_class
  mapping = import_session.column_mapping
  tenant_attrs = build_tenant_attrs

  rows.each_with_index do |row, index|
    process_row(klass, row, mapping, tenant_attrs, index + 2) # +2 for header + 1-based
  end

  import_session.update!(status: "complete", completed_at: Time.current)
rescue => e
  import_session.update!(status: "failed", completed_at: Time.current)
  Rails.logger.error("[CSVImportService] Import #{import_session.id} failed: #{e.message}")
  raise
end