class ArtirixDataModels::DAORegistry

Public Class Methods

instance() click to toggle source
# File lib/artirix_data_models/dao_registry.rb, line 3
def self.instance
  @__instance ||= new
end
instance=(x) click to toggle source
# File lib/artirix_data_models/dao_registry.rb, line 7
def self.instance=(x)
  @__instance = x
end
mark_as_main_registry() click to toggle source
# File lib/artirix_data_models/dao_registry.rb, line 11
def self.mark_as_main_registry
  ArtirixDataModels::DAORegistry.instance = self.instance
end
new() click to toggle source

singleton instance

# File lib/artirix_data_models/dao_registry.rb, line 16
def initialize
  @_repository         = {}
  @_persistent_loaders = {}
  @_transient_loaders  = {}

  setup_config
end

Private Class Methods

exist?(key) click to toggle source
# File lib/artirix_data_models/dao_registry.rb, line 142
def self.exist?(key)
  instance.exist? key
end
get(key) click to toggle source
# File lib/artirix_data_models/dao_registry.rb, line 138
def self.get(key)
  instance.get key
end
method_missing(method, *args, &block) click to toggle source
Calls superclass method
# File lib/artirix_data_models/dao_registry.rb, line 150
def self.method_missing(method, *args, &block)
  if exist?(method)
    get(method)
  else
    super
  end
end
respond_to_missing?(method, include_all = false) click to toggle source
Calls superclass method
# File lib/artirix_data_models/dao_registry.rb, line 158
def self.respond_to_missing?(method, include_all = false)
  exist?(method) || super
end
set_loader(key, loader = nil, &block) click to toggle source

static methods

# File lib/artirix_data_models/dao_registry.rb, line 126
def self.set_loader(key, loader = nil, &block)
  instance.set_loader key, loader, &block
end
set_persistent_loader(key, loader = nil, &block) click to toggle source
# File lib/artirix_data_models/dao_registry.rb, line 130
def self.set_persistent_loader(key, loader = nil, &block)
  instance.set_persistent_loader key, loader, &block
end
set_transient_loader(key, loader = nil, &block) click to toggle source
# File lib/artirix_data_models/dao_registry.rb, line 134
def self.set_transient_loader(key, loader = nil, &block)
  instance.set_transient_loader key, loader, &block
end
with_identity_map() click to toggle source
# File lib/artirix_data_models/dao_registry.rb, line 146
def self.with_identity_map
  instance.with_identity_map
end

Public Instance Methods

aggregations_factory() click to toggle source
# File lib/artirix_data_models/dao_registry.rb, line 31
def aggregations_factory
  get :aggregations_factory
end
exist?(key) click to toggle source
# File lib/artirix_data_models/dao_registry.rb, line 47
def exist?(key)
  key = key.to_sym
  @_repository.key?(key) || @_persistent_loaders.key?(key) || @_transient_loaders.key?(key)
end
get(key, override_dao_registry: nil) click to toggle source
# File lib/artirix_data_models/dao_registry.rb, line 52
def get(key, override_dao_registry: nil)
  x = @_repository[key.to_sym] || call_loader(key)
  if x.present? && override_dao_registry.present? && x.respond_to?(:set_dao_registry)
    x.set_dao_registry override_dao_registry
  end

  x
end
get_model(_model_dao_name, _primary_key) click to toggle source
# File lib/artirix_data_models/dao_registry.rb, line 106
def get_model(_model_dao_name, _primary_key)
  # DO NOTHING
  nil
end
method_missing(method, *args, &block) click to toggle source
Calls superclass method
# File lib/artirix_data_models/dao_registry.rb, line 35
def method_missing(method, *args, &block)
  if exist?(method)
    get(method)
  else
    super
  end
end
register_model(_model) click to toggle source

IDENTITY MAP compatible

# File lib/artirix_data_models/dao_registry.rb, line 96
def register_model(_model)
  # DO NOTHING
  self
end
respond_to_missing?(method, _ = false) click to toggle source
Calls superclass method
# File lib/artirix_data_models/dao_registry.rb, line 43
def respond_to_missing?(method, _ = false)
  exist?(method) || super
end
set_loader(key, loader = nil, &block)
set_persistent_loader(key, loader = nil, &block) click to toggle source
# File lib/artirix_data_models/dao_registry.rb, line 73
def set_persistent_loader(key, loader = nil, &block)
  key = key.to_sym

  if block
    @_persistent_loaders[key] = block
  elsif loader.respond_to? :call
    @_persistent_loaders[key] = loader
  else
    raise ArgumentError, "no block and no loader given for key #{key}"
  end
end
Also aliased as: set_loader
set_transient_loader(key, loader = nil, &block) click to toggle source
# File lib/artirix_data_models/dao_registry.rb, line 61
def set_transient_loader(key, loader = nil, &block)
  key = key.to_sym

  if block
    @_transient_loaders[key] = block
  elsif loader.respond_to? :call
    @_transient_loaders[key] = loader
  else
    raise ArgumentError, "no block and no loader given for key #{key}"
  end
end
setup_config() click to toggle source
# File lib/artirix_data_models/dao_registry.rb, line 24
def setup_config
  set_persistent_loader(:aggregations_factory) { ArtirixDataModels::AggregationsFactory.new }
  set_persistent_loader(:basic_class) { ArtirixDataModels::BasicModelDAO }
  set_persistent_loader(:gateway) { ArtirixDataModels::DataGateway.new }
  set_persistent_loader(:model_fields) { ArtirixDataModels::ModelFieldsDAO.new gateway: get(:gateway) }
end
unload_model(_model) click to toggle source
# File lib/artirix_data_models/dao_registry.rb, line 101
def unload_model(_model)
  # DO NOTHING
  self
end
with_identity_map() click to toggle source

IDENTITY MAP #

# File lib/artirix_data_models/dao_registry.rb, line 91
def with_identity_map
  IdentityMap.new dao_registry: self
end

Private Instance Methods

call_loader(key) click to toggle source
# File lib/artirix_data_models/dao_registry.rb, line 112
def call_loader(key)
  key = key.to_sym
  if @_persistent_loaders[key]
    @_repository[key] = @_persistent_loaders[key].call
  elsif @_transient_loaders[key]
    @_transient_loaders[key].call
  else
    raise LoaderNotFound, "no loader or transient found for #{key}"
  end
end