Module: Bulkrax::CsvRow::DuplicateIdentifier

Defined in:
app/validators/bulkrax/csv_row/duplicate_identifier.rb

Overview

Validates that each row has a unique source_identifier. Uses context (Hash: id => first_seen_row_number) to detect duplicates.

Class Method Summary collapse

Class Method Details

.call(record, row_index, context) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'app/validators/bulkrax/csv_row/duplicate_identifier.rb', line 9

def self.call(record, row_index, context)
  source_id = record[:source_identifier]
  return if source_id.blank? && Bulkrax.fill_in_blank_source_identifiers.present?

  source_id_label = context[:source_identifier] || 'source_identifier'
  first_row = context[:seen_ids][source_id]

  if first_row
    add_duplicate_error(context, row_index, source_id, source_id_label, first_row)
  else
    context[:seen_ids][source_id] = row_index
    add_existing_warning(context, row_index, source_id, source_id_label)
  end
end