Class: ArtirixDataModels::BasicModelDAO

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(model_name, model_class, paths_factory, gateway, fake_mode_factory) ⇒ BasicModelDAO

Returns a new instance of BasicModelDAO.



4
5
6
7
8
9
10
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 4

def initialize(model_name, model_class, paths_factory, gateway, fake_mode_factory)
  @model_name        = model_name
  @model_class       = model_class
  @paths_factory     = paths_factory
  @gateway           = gateway
  @fake_mode_factory = fake_mode_factory
end

Instance Attribute Details

#fake_mode_factoryObject (readonly)

Returns the value of attribute fake_mode_factory.



2
3
4
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 2

def fake_mode_factory
  @fake_mode_factory
end

#gatewayObject (readonly)

Returns the value of attribute gateway.



2
3
4
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 2

def gateway
  @gateway
end

#model_classObject (readonly)

Returns the value of attribute model_class.



2
3
4
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 2

def model_class
  @model_class
end

#model_nameObject (readonly)

Returns the value of attribute model_name.



2
3
4
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 2

def model_name
  @model_name
end

#paths_factoryObject (readonly)

Returns the value of attribute paths_factory.



2
3
4
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 2

def paths_factory
  @paths_factory
end

Instance Method Details

#_get(path, response_adaptor: nil, body: nil, fake_response: nil, cache_adaptor: nil) ⇒ Object



119
120
121
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 119

def _get(path, response_adaptor: nil, body: nil, fake_response: nil, cache_adaptor: nil)
  gateway.get path, response_adaptor: response_adaptor, body: body, fake: fake?, fake_response: fake_response, cache_adaptor: cache_adaptor
end

#_post(path, response_adaptor: nil, body: nil, fake_response: nil, cache_adaptor: nil) ⇒ Object



123
124
125
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 123

def _post(path, response_adaptor: nil, body: nil, fake_response: nil, cache_adaptor: nil)
  gateway.post path, response_adaptor: response_adaptor, body: body, fake: fake?, fake_response: fake_response, cache_adaptor: cache_adaptor
end

#empty_collection(from, size) ⇒ Object



107
108
109
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 107

def empty_collection(from, size)
  empty_collection_for model_class, from, size
end

#empty_collection_for(model_class, from, size) ⇒ Object



111
112
113
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 111

def empty_collection_for(model_class, from, size)
  ArtirixDataModels::EsCollection.empty model_class, from: from, size: size
end

#fake?Boolean

Returns:

  • (Boolean)


127
128
129
130
131
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 127

def fake?
  return true if forced_fake_enabled?
  return false if forced_fake_disabled?
  fake_mode_factory.enabled?
end

#fake_get_full_response(model_pk, model_to_reload = nil) ⇒ Object



84
85
86
87
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 84

def fake_get_full_response(model_pk, model_to_reload = nil)
  return nil unless fake?
  fake_mode_factory.get_full model_pk, model_to_reload
end

#fake_get_response(model_pk) ⇒ Object



74
75
76
77
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 74

def fake_get_response(model_pk)
  return nil unless fake?
  fake_mode_factory.get model_pk
end

#fake_get_some_response(model_pks) ⇒ Object



79
80
81
82
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 79

def fake_get_some_response(model_pks)
  return nil unless fake?
  fake_mode_factory.get_some model_pks
end

#find(model_pk, cache_adaptor: nil, **extra_options) ⇒ Object



36
37
38
39
40
41
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 36

def find(model_pk, cache_adaptor: nil, **extra_options)
  path    = paths_factory.get model_pk
  adaptor = response_adaptor_for_single

  _get(path, response_adaptor: adaptor, fake_response: fake_get_response(model_pk), cache_adaptor: cache_adaptor, **extra_options)
end

#force_fake_disabledObject



56
57
58
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 56

def force_fake_disabled
  @_forced_fake_enabled = false
end

#force_fake_enabledObject



52
53
54
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 52

def force_fake_enabled
  @_forced_fake_enabled = true
end

#forced_fake_disabled?Boolean

Returns:

  • (Boolean)


69
70
71
72
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 69

def forced_fake_disabled?
  return false if @_forced_fake_enabled.nil?
  !@_forced_fake_enabled
end

#forced_fake_enabled?Boolean

Returns:

  • (Boolean)


64
65
66
67
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 64

def forced_fake_enabled?
  return false if @_forced_fake_enabled.nil?
  !!@_forced_fake_enabled
end

#get(model_pk, cache_adaptor: nil, **extra_options) ⇒ Object



30
31
32
33
34
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 30

def get(model_pk, cache_adaptor: nil, **extra_options)
  find(model_pk, cache_adaptor: cache_adaptor, **extra_options)
rescue ArtirixDataModels::DataGateway::NotFound
  nil
end

#get_full(model_pk, model_to_reload:, cache_adaptor: nil, **extra_options) ⇒ Object



20
21
22
23
24
25
26
27
28
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 20

def get_full(model_pk, model_to_reload:, cache_adaptor: nil, **extra_options)
  path    = paths_factory.get_full model_pk
  adaptor = response_adaptor_for_reload(model_to_reload)

  _get path, response_adaptor: adaptor, fake_response: fake_get_full_response(model_pk, model_to_reload), cache_adaptor: cache_adaptor, **extra_options

  model_to_reload.mark_full_mode
  model_to_reload
end

#get_some(model_pks, cache_adaptor: nil, **extra_options) ⇒ Object



43
44
45
46
47
48
49
50
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 43

def get_some(model_pks, cache_adaptor: nil, **extra_options)
  path    = paths_factory.get_some(model_pks)
  adaptor = response_adaptor_for_some

  _get(path, response_adaptor: adaptor, fake_response: fake_get_some_response(model_pks), cache_adaptor: cache_adaptor, **extra_options)
rescue ArtirixDataModels::DataGateway::NotFound
  []
end

#model_adaptor_factoryObject



115
116
117
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 115

def model_adaptor_factory
  ArtirixDataModels::GatewayResponseAdaptors::ModelAdaptor
end

#partial_mode_fieldsObject



12
13
14
15
16
17
18
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 12

def partial_mode_fields
  if fake?
    fake_mode_factory.partial_mode_fields
  else
    ArtirixDataModels::DAORegistry.model_fields.partial_mode_fields_for model_name
  end
end

#remove_force_fakeObject



60
61
62
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 60

def remove_force_fake
  @_forced_fake_enabled = nil
end

#response_adaptor_for_collection(from, size, collection_element_model_class = model_class) ⇒ Object



103
104
105
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 103

def response_adaptor_for_collection(from, size, collection_element_model_class = model_class)
  model_adaptor_factory.collection collection_element_model_class, from, size
end

#response_adaptor_for_reload(model_to_reload) ⇒ Object



89
90
91
92
93
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 89

def response_adaptor_for_reload(model_to_reload)
  model_adaptor_factory.with_block do |data_hash|
    model_to_reload.reload_with data_hash
  end
end

#response_adaptor_for_singleObject



95
96
97
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 95

def response_adaptor_for_single
  model_adaptor_factory.single model_class
end

#response_adaptor_for_some(element_model_class = model_class) ⇒ Object



99
100
101
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 99

def response_adaptor_for_some(element_model_class = model_class)
  model_adaptor_factory.some element_model_class
end