class Vorpal::Config::MainConfig

@private

Public Class Methods

new() click to toggle source
# File lib/vorpal/config/main_config.rb, line 8
def initialize
  @class_configs = []
end

Public Instance Methods

add_class_config(class_config) click to toggle source
# File lib/vorpal/config/main_config.rb, line 22
def add_class_config(class_config)
  @class_configs << class_config
end
config_for(clazz) click to toggle source
# File lib/vorpal/config/main_config.rb, line 12
def config_for(clazz)
  config = @class_configs.detect { |conf| conf.domain_class == clazz }
  raise Vorpal::ConfigurationNotFound.new("No configuration found for #{clazz}") unless config
  config
end
config_for_db_object(db_object) click to toggle source
# File lib/vorpal/config/main_config.rb, line 18
def config_for_db_object(db_object)
  @class_configs.detect { |conf| conf.db_class == db_object.class }
end
initialize_association_configs() click to toggle source
# File lib/vorpal/config/main_config.rb, line 26
def initialize_association_configs
  association_configs = {}
  @class_configs.each do |config|
    (config.has_ones + config.has_manys).each do |association_end_config|
      associated_class_config = config_for(association_end_config.associated_class)
      association_end_config.set_class_config(config)

      association_config = build_association_config(association_configs, associated_class_config, association_end_config.fk, association_end_config.fk_type)
      association_config.remote_end_config = association_end_config
      association_config.add_remote_class_config(config)
      association_end_config.association_config = association_config
    end

    config.belongs_tos.each do |association_end_config|
      associated_class_configs = association_end_config.associated_classes.map(&method(:config_for))

      association_config = build_association_config(association_configs, config, association_end_config.fk, association_end_config.fk_type)
      association_config.local_end_config = association_end_config
      association_config.add_remote_class_config(associated_class_configs)
      association_end_config.association_config = association_config
    end
  end

  association_configs.values.each do |association_config|
    association_config.local_class_config.local_association_configs << association_config
    association_config.validate
  end
end

Private Instance Methods

build_association_config(association_configs, local_config, fk, fk_type) click to toggle source
# File lib/vorpal/config/main_config.rb, line 57
def build_association_config(association_configs, local_config, fk, fk_type)
  association_config = AssociationConfig.new(local_config, fk, fk_type)
  if association_configs[association_config]
    association_config = association_configs[association_config]
  else
    association_configs[association_config] = association_config
  end
  association_config
end