module Avromatic::Model::NestedModels::ClassMethods

Public Instance Methods

referenced_model_classes() click to toggle source
# File lib/avromatic/model/nested_models.rb, line 29
def referenced_model_classes
  attribute_definitions.values.flat_map { |definition| definition.type.referenced_model_classes }.freeze
end
register!() click to toggle source

Register this model if it can be used as a nested model.

# File lib/avromatic/model/nested_models.rb, line 14
def register!
  return unless key_avro_schema.nil? && value_avro_schema.type_sym == :record

  processed = Set.new
  roots = [self]
  until roots.empty?
    model = roots.shift
    # Avoid any nested model dependency cycles by ignoring already processed models
    next unless processed.add?(model)

    nested_models.ensure_registered_model(model)
    roots.concat(model.referenced_model_classes)
  end
end