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



163
164
165
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 163

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

#empty_collection_for(model_class, from, size) ⇒ Object



167
168
169
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 167

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

#fake?Boolean

FAKE MODE #

Returns:

  • (Boolean)


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

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



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

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



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

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

#fake_get_some_response(model_pks) ⇒ Object



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

def fake_get_some_response(model_pks)
  return nil unless fake?
  -> { fake_mode_factory.get_some model_pks }
end

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



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

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

  perform_get path,
              response_adaptor: response_adaptor,
              fake_response: fake_response,
              cache_adaptor: cache_adaptor,
              **extra_options
end

#force_fake_disabledObject



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

def force_fake_disabled
  @_forced_fake_enabled = false
end

#force_fake_enabledObject



126
127
128
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 126

def force_fake_enabled
  @_forced_fake_enabled = true
end

#forced_fake_disabled?Boolean

Returns:

  • (Boolean)


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

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

#forced_fake_enabled?Boolean

Returns:

  • (Boolean)


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

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

#get(*args) ⇒ Object



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

def get(*args)
  find *args
rescue ArtirixDataModels::DataGateway::NotFound
  nil
end

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

ACTIONS #



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

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

  perform_get path, response_adaptor: response_adaptor, fake_response: fake_response, cache_adaptor: cache_adaptor, **extra_options

  model_to_reload.mark_full_mode
  model_to_reload
end

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



71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 71

def get_some(model_pks, path: nil, fake_response: nil, cache_adaptor: nil, response_adaptor: nil, **extra_options)
  path ||= paths_factory.get_some(model_pks)
  response_adaptor ||= response_adaptor_for_some
  fake_response ||= fake_get_some_response(model_pks)
  perform_get path,
              response_adaptor: response_adaptor,
              fake_response: fake_response,
              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



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

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, fake: nil, response_adaptor: nil, body: nil, fake_response: nil, cache_adaptor: nil, timeout: nil, gateway: nil, headers: nil) ⇒ Object Also known as: _delete



248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 248

def perform_delete(path,
                   fake: nil,
                   response_adaptor: nil,
                   body: nil,
                   fake_response: nil,
                   cache_adaptor: nil,
                   timeout: nil,
                   gateway: nil,
                   headers: nil)

  fake = fake.nil? ? fake? : fake
  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, fake: nil, response_adaptor: nil, body: nil, fake_response: nil, cache_adaptor: nil, timeout: nil, gateway: nil, headers: nil) ⇒ Object Also known as: _get

PERFORM CALLS #



175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 175

def perform_get(path,
                fake: nil,
                response_adaptor: nil,
                body: nil,
                fake_response: nil,
                cache_adaptor: nil,
                timeout: nil,
                gateway: nil,
                headers: nil)

  fake = fake.nil? ? fake? : fake
  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, fake: nil, response_adaptor: nil, body: nil, fake_response: nil, cache_adaptor: nil, timeout: nil, gateway: nil, headers: nil) ⇒ Object Also known as: _post



200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 200

def perform_post(path,
                 fake: nil,
                 response_adaptor: nil,
                 body: nil,
                 fake_response: nil,
                 cache_adaptor: nil,
                 timeout: nil,
                 gateway: nil,
                 headers: nil)

  fake = fake.nil? ? fake? : fake
  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, fake: nil, response_adaptor: nil, body: nil, fake_response: nil, cache_adaptor: nil, timeout: nil, gateway: nil, headers: nil) ⇒ Object Also known as: _put



224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 224

def perform_put(path,
                fake: nil,
                response_adaptor: nil,
                body: nil,
                fake_response: nil,
                cache_adaptor: nil,
                timeout: nil,
                gateway: nil,
                headers: nil)

  fake = fake.nil? ? fake? : fake
  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 #



88
89
90
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 88

def preloaded_gateway
  loaded_gateway.presence || gateway_factory.call
end

#raise_no_gatewayObject



102
103
104
105
106
107
108
109
110
111
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 102

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



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

def remove_force_fake
  @_forced_fake_enabled = nil
end