Class: Bulkrax::CsvTemplate::FieldAnalyzer

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

Overview

Analyzes model fields and schemas

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(mappings, admin_set_id = nil) ⇒ FieldAnalyzer

Returns a new instance of FieldAnalyzer.



9
10
11
12
13
14
# File 'app/services/bulkrax/csv_template/field_analyzer.rb', line 9

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

Instance Attribute Details

#field_listObject (readonly)

Returns the value of attribute field_list.



7
8
9
# File 'app/services/bulkrax/csv_template/field_analyzer.rb', line 7

def field_list
  @field_list
end

Instance Method Details

#controlled_vocab_termsObject



28
29
30
31
32
# File 'app/services/bulkrax/csv_template/field_analyzer.rb', line 28

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



16
17
18
19
20
21
22
23
24
25
26
# File 'app/services/bulkrax/csv_template/field_analyzer.rb', line 16

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

  klass = CsvTemplate::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