Class: Daifuku::MultipleTypesRule

Inherits:
Rule
  • Object
show all
Defined in:
lib/daifuku/validator.rb

Instance Method Summary collapse

Instance Method Details

#validate!(categories) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/daifuku/validator.rb', line 21

def validate!(categories)
  violations = []
  all_columns = categories.values.map { |category| category.events.values.map { |event| event.columns }}.flatten
  columns_by_name = all_columns.group_by { |column| column.name }
  all_duplicated_columns = columns_by_name.filter { |_, columns| columns.size >= 2 }
  all_duplicated_columns.each do |name, columns|
    unless columns.map { |column| column.type }.uniq { |type| [type.name, type.str_length] }.size == 1
      violations << Violation.new("Multiple types are found for '#{name}'",
                                  category_name: nil,
                                  event_name: nil,
                                  column_name: name)
    end
  end
  violations
end