Class: Bulkrax::SampleCsvService::FieldAnalyzer

Inherits:
Object
  • Object
show all
Defined in:
app/services/bulkrax/sample_csv_service/field_analyzer.rb

Overview

Analyzes model fields and schemas

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(mappings) ⇒ FieldAnalyzer

Returns a new instance of FieldAnalyzer.



8
9
10
11
12
# File 'app/services/bulkrax/sample_csv_service/field_analyzer.rb', line 8

def initialize(mappings)
  @mappings = mappings
  @field_list = []
  @schema = nil
end

Instance Attribute Details

#field_listObject (readonly)

Returns the value of attribute field_list.



6
7
8
# File 'app/services/bulkrax/sample_csv_service/field_analyzer.rb', line 6

def field_list
  @field_list
end

Instance Method Details

#controlled_vocab_termsObject



26
27
28
29
30
# File 'app/services/bulkrax/sample_csv_service/field_analyzer.rb', line 26

def controlled_vocab_terms
  @field_list.flat_map do |hash|
    hash.values.flat_map { |data| data["controlled_vocab_terms"] || [] }
  end.uniq
end

#find_or_create_field_list_for(model_name:) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
# File 'app/services/bulkrax/sample_csv_service/field_analyzer.rb', line 14

def find_or_create_field_list_for(model_name:)
  existing = @field_list.find { |entry| entry.key?(model_name) }
  return existing if existing.present?

  klass = SampleCsvService::ModelLoader.determine_klass_for(model_name)
  return {} if klass.nil?

  model_entry = build_field_list_entry(model_name, klass)
  @field_list << model_entry
  model_entry
end