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_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