Class: ArtirixDataModels::BasicModelDAO

Inherits:
Object
  • Object
show all
Includes:
DAOConcerns::WithResponseAdaptors, WithDAORegistry
Defined in:
lib/artirix_data_models/daos/basic_model_dao.rb

Defined Under Namespace

Classes: NoGatewayConfiguredError

Constant Summary

Constants included from WithDAORegistry

WithDAORegistry::DEFAULT_DAO_REGISTRY_LOADER

Instance Attribute Summary collapse

Attributes included from WithDAORegistry

#dao_registry_loader

Instance Method Summary collapse

Methods included from WithDAORegistry

#dao_registry, #dao_registry=, #default_dao_registry, loader_or_registry_or_default, #set_dao_registry, #set_dao_registry_and_loader, #set_dao_registry_loader, #set_default_dao_registry_loader

Methods included from DAOConcerns::WithResponseAdaptors

#model_adaptor_factory, #response_adaptor_for_block, #response_adaptor_for_callable, #response_adaptor_for_collection, #response_adaptor_for_identity, #response_adaptor_for_reload, #response_adaptor_for_single, #response_adaptor_for_some

Constructor Details

#initialize(dao_registry: nil, dao_registry_loader: nil, model_name:, model_class:, paths_factory:, gateway:, fake_mode_factory:, gateway_factory:, ignore_default_gateway: false) ⇒ BasicModelDAO

Returns a new instance of BasicModelDAO.



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 7

def initialize(dao_registry: nil,
               dao_registry_loader: nil,
               model_name:,
               model_class:,
               paths_factory:,
               gateway:,
               fake_mode_factory:,
               gateway_factory:,
               ignore_default_gateway: false)

  set_dao_registry_and_loader dao_registry_loader, dao_registry

  @model_name             = model_name
  @model_class            = model_class
  @paths_factory          = paths_factory
  @loaded_gateway         = gateway
  @gateway_factory        = gateway_factory
  @fake_mode_factory      = fake_mode_factory
  @ignore_default_gateway = ignore_default_gateway
end

Instance Attribute Details

#fake_mode_factoryObject (readonly)

Returns the value of attribute fake_mode_factory.



5
6
7
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 5

def fake_mode_factory
  @fake_mode_factory
end

#gateway_factoryObject (readonly)

Returns the value of attribute gateway_factory.



5
6
7
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 5

def gateway_factory
  @gateway_factory
end

#model_classObject (readonly)

Returns the value of attribute model_class.



5
6
7
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 5

def model_class
  @model_class
end

#model_nameObject (readonly)

Returns the value of attribute model_name.



5
6
7
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 5

def model_name
  @model_name
end

#paths_factoryObject (readonly)

Returns the value of attribute paths_factory.



5
6
7
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 5

def paths_factory
  @paths_factory
end

Instance Method Details

#default_gateway_available?Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 28

def default_gateway_available?
  !@ignore_default_gateway
end

#empty_collection(from, size) ⇒ Object



153
154
155
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 153

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

#empty_collection_for(model_class, from, size) ⇒ Object



157
158
159
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 157

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

#fake?Boolean

FAKE MODE #

Returns:

  • (Boolean)


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

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



148
149
150
151
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 148

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



138
139
140
141
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 138

def fake_get_response(model_pk)
  return nil unless fake?
  -> { fake_mode_factory.get model_pk }
end

#fake_get_some_response(model_pks) ⇒ Object



143
144
145
146
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 143

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, response_adaptor: nil, **extra_options) ⇒ Object



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

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

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

#force_fake_disabledObject



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

def force_fake_disabled
  @_forced_fake_enabled = false
end

#force_fake_enabledObject



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

def force_fake_enabled
  @_forced_fake_enabled = true
end

#forced_fake_disabled?Boolean

Returns:

  • (Boolean)


133
134
135
136
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 133

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

#forced_fake_enabled?Boolean

Returns:

  • (Boolean)


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

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

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



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

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:, response_adaptor: nil, cache_adaptor: nil, **extra_options) ⇒ Object

ACTIONS #



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

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

  perform_get path, response_adaptor: response_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, response_adaptor: nil, **extra_options) ⇒ Object



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

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

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

#loaded_gatewayObject



32
33
34
35
36
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 32

def loaded_gateway
  @loaded_gateway ||= if gateway_factory.blank? && default_gateway_available?
                        dao_registry.get(:gateway)
                      end
end

#partial_mode_fieldsObject



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

def partial_mode_fields
  if fake?
    fake_mode_factory.partial_mode_fields
  else
    dao_registry.get(:model_fields).partial_mode_fields_for model_name
  end
end

#perform_delete(path, response_adaptor: nil, body: nil, fake_response: nil, cache_adaptor: nil, timeout: nil, gateway: nil, headers: nil) ⇒ Object Also known as: _delete



208
209
210
211
212
213
214
215
216
217
218
219
220
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 208

def perform_delete(path, response_adaptor: nil, body: nil, fake_response: nil, cache_adaptor: nil, timeout: nil, gateway: nil, headers: nil)
  g = gateway.presence || preloaded_gateway
  raise_no_gateway unless g.present?

  g.delete path,
           response_adaptor: response_adaptor,
           body:             body,
           timeout:          timeout,
           fake:             fake?,
           fake_response:    fake_response,
           cache_adaptor:    cache_adaptor,
           headers:          headers
end

#perform_get(path, response_adaptor: nil, body: nil, fake_response: nil, cache_adaptor: nil, timeout: nil, gateway: nil, headers: nil) ⇒ Object Also known as: _get

PERFORM CALLS #



165
166
167
168
169
170
171
172
173
174
175
176
177
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 165

def perform_get(path, response_adaptor: nil, body: nil, fake_response: nil, cache_adaptor: nil, timeout: nil, gateway: nil, headers: nil)
  g = gateway.presence || preloaded_gateway
  raise_no_gateway unless g.present?

  g.get path,
        response_adaptor: response_adaptor,
        body:             body,
        timeout:          timeout,
        fake:             fake?,
        fake_response:    fake_response,
        cache_adaptor:    cache_adaptor,
        headers:          headers
end

#perform_post(path, response_adaptor: nil, body: nil, fake_response: nil, cache_adaptor: nil, timeout: nil, gateway: nil, headers: nil) ⇒ Object Also known as: _post



180
181
182
183
184
185
186
187
188
189
190
191
192
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 180

def perform_post(path, response_adaptor: nil, body: nil, fake_response: nil, cache_adaptor: nil, timeout: nil, gateway: nil, headers: nil)
  g = gateway.presence || preloaded_gateway
  raise_no_gateway unless g.present?

  g.post path,
         response_adaptor: response_adaptor,
         body:             body,
         timeout:          timeout,
         fake:             fake?,
         fake_response:    fake_response,
         cache_adaptor:    cache_adaptor,
         headers:          headers
end

#perform_put(path, response_adaptor: nil, body: nil, fake_response: nil, cache_adaptor: nil, timeout: nil, gateway: nil, headers: nil) ⇒ Object Also known as: _put



194
195
196
197
198
199
200
201
202
203
204
205
206
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 194

def perform_put(path, response_adaptor: nil, body: nil, fake_response: nil, cache_adaptor: nil, timeout: nil, gateway: nil, headers: nil)
  g = gateway.presence || preloaded_gateway
  raise_no_gateway unless g.present?

  g.put path,
        response_adaptor: response_adaptor,
        body:             body,
        timeout:          timeout,
        fake:             fake?,
        fake_response:    fake_response,
        cache_adaptor:    cache_adaptor,
        headers:          headers
end

#preloaded_gatewayObject Also known as: gateway

GATEWAY #



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

def preloaded_gateway
  loaded_gateway.presence || gateway_factory.call
end

#raise_no_gatewayObject



92
93
94
95
96
97
98
99
100
101
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 92

def raise_no_gateway
  msg = 'no gateway passed to request, no gateway configured on creation'
  if gateway_factory.present?
    msg = "#{msg}, and no gateway returned by the factory"
  else
    msg = "#{msg}, and no gateway factory configured on creation"
  end

  raise NoGatewayConfiguredError, msg
end

#remove_force_fakeObject



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

def remove_force_fake
  @_forced_fake_enabled = nil
end