Class: ArtirixDataModels::DAORegistry

Inherits:
Object
  • Object
show all
Defined in:
lib/artirix_data_models/dao_registry.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeDAORegistry

singleton instance



16
17
18
19
20
21
# File 'lib/artirix_data_models/dao_registry.rb', line 16

def initialize
  @_repository = {}
  @_loaders    = {}

  setup_config
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args, &block) ⇒ Object



34
35
36
37
38
39
40
# File 'lib/artirix_data_models/dao_registry.rb', line 34

def method_missing(method, *args, &block)
  if exist?(method)
    get(method)
  else
    super
  end
end

Class Method Details

.exist?(key) ⇒ Boolean

Returns:

  • (Boolean)


82
83
84
# File 'lib/artirix_data_models/dao_registry.rb', line 82

def self.exist?(key)
  instance.exist? key
end

.get(key) ⇒ Object



78
79
80
# File 'lib/artirix_data_models/dao_registry.rb', line 78

def self.get(key)
  instance.get key
end

.instanceObject



3
4
5
# File 'lib/artirix_data_models/dao_registry.rb', line 3

def self.instance
  @__instance ||= new
end

.instance=(x) ⇒ Object



7
8
9
# File 'lib/artirix_data_models/dao_registry.rb', line 7

def self.instance=(x)
  @__instance = x
end

.mark_as_main_registryObject



11
12
13
# File 'lib/artirix_data_models/dao_registry.rb', line 11

def self.mark_as_main_registry
  ArtirixDataModels::DAORegistry.instance = self.instance
end

.method_missing(method, *args, &block) ⇒ Object



86
87
88
89
90
91
92
# File 'lib/artirix_data_models/dao_registry.rb', line 86

def self.method_missing(method, *args, &block)
  if exist?(method)
    get(method)
  else
    super
  end
end

.respond_to_missing?(method, include_all = false) ⇒ Boolean

Returns:

  • (Boolean)


94
95
96
# File 'lib/artirix_data_models/dao_registry.rb', line 94

def self.respond_to_missing?(method, include_all = false)
  exist?(method) || super
end

.set_loader(key, loader = nil, &block) ⇒ Object

static methods



74
75
76
# File 'lib/artirix_data_models/dao_registry.rb', line 74

def self.set_loader(key, loader = nil, &block)
  instance.set_loader key, loader, &block
end

Instance Method Details

#aggregations_factoryObject



30
31
32
# File 'lib/artirix_data_models/dao_registry.rb', line 30

def aggregations_factory
  get :aggregations_factory
end

#call_loader(key) ⇒ Object



55
56
57
58
# File 'lib/artirix_data_models/dao_registry.rb', line 55

def call_loader(key)
  key               = key.to_sym
  @_repository[key] = @_loaders[key].call
end

#exist?(key) ⇒ Boolean

Returns:

  • (Boolean)


46
47
48
49
# File 'lib/artirix_data_models/dao_registry.rb', line 46

def exist?(key)
  key = key.to_sym
  @_repository.key?(key) || @_loaders.key?(key)
end

#get(key) ⇒ Object



51
52
53
# File 'lib/artirix_data_models/dao_registry.rb', line 51

def get(key)
  @_repository[key.to_sym] || call_loader(key)
end

#respond_to_missing?(method, _ = false) ⇒ Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/artirix_data_models/dao_registry.rb', line 42

def respond_to_missing?(method, _ = false)
  exist?(method) || super
end

#set_loader(key, loader = nil, &block) ⇒ Object



60
61
62
63
64
65
66
67
68
69
70
# File 'lib/artirix_data_models/dao_registry.rb', line 60

def set_loader(key, loader = nil, &block)
  key = key.to_sym

  if block
    @_loaders[key] = block
  elsif loader.respond_to? :call
    @_loaders[key] = loader
  else
    raise ArgumentError, "no block and no loader given for key #{key}"
  end
end

#setup_configObject



23
24
25
26
27
28
# File 'lib/artirix_data_models/dao_registry.rb', line 23

def setup_config
  set_loader(:aggregations_factory) { ArtirixDataModels::AggregationsFactory.new }
  set_loader(:basic_class) { ArtirixDataModels::BasicModelDAO }
  set_loader(:gateway) { ArtirixDataModels::DataGateway.new }
  set_loader(:model_fields) { ArtirixDataModels::ModelFieldsDAO.new gateway: get(:gateway) }
end