Class: ArtirixDataModels::BasicModelDAO

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

Defined Under Namespace

Classes: NoGatewayConfiguredError

Instance Attribute Summary collapse

Instance Method Summary collapse

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(model_name:, model_class:, paths_factory:, gateway:, fake_mode_factory:, gateway_factory:) ⇒ BasicModelDAO

Returns a new instance of BasicModelDAO.



6
7
8
9
10
11
12
13
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 6

def initialize(model_name:, model_class:, paths_factory:, gateway:, fake_mode_factory:, gateway_factory:)
  @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
end

Instance Attribute Details

#fake_mode_factoryObject (readonly)

Returns the value of attribute fake_mode_factory.



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

def fake_mode_factory
  @fake_mode_factory
end

#gateway_factoryObject (readonly)

Returns the value of attribute gateway_factory.



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

def gateway_factory
  @gateway_factory
end

#loaded_gatewayObject (readonly)

Returns the value of attribute loaded_gateway.



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

def loaded_gateway
  @loaded_gateway
end

#model_classObject (readonly)

Returns the value of attribute model_class.



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

def model_class
  @model_class
end

#model_nameObject (readonly)

Returns the value of attribute model_name.



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

def model_name
  @model_name
end

#paths_factoryObject (readonly)

Returns the value of attribute paths_factory.



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

def paths_factory
  @paths_factory
end

Instance Method Details

#empty_collection(from, size) ⇒ Object



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

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

#empty_collection_for(model_class, from, size) ⇒ Object



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

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

#fake?Boolean

FAKE MODE #

Returns:

  • (Boolean)


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

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



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

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



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

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

#fake_get_some_response(model_pks) ⇒ Object



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

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



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

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



97
98
99
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 97

def force_fake_disabled
  @_forced_fake_enabled = false
end

#force_fake_enabledObject



93
94
95
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 93

def force_fake_enabled
  @_forced_fake_enabled = true
end

#forced_fake_disabled?Boolean

Returns:

  • (Boolean)


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

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

#forced_fake_enabled?Boolean

Returns:

  • (Boolean)


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

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

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



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

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 #



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

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



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

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

#partial_mode_fieldsObject



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

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

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



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

def perform_delete(path, response_adaptor: nil, body: nil, fake_response: nil, cache_adaptor: nil, timeout: nil, gateway: 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
end

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

PERFORM CALLS #



142
143
144
145
146
147
148
149
150
151
152
153
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 142

def perform_get(path, response_adaptor: nil, body: nil, fake_response: nil, cache_adaptor: nil, timeout: nil, gateway: 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
end

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



156
157
158
159
160
161
162
163
164
165
166
167
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 156

def perform_post(path, response_adaptor: nil, body: nil, fake_response: nil, cache_adaptor: nil, timeout: nil, gateway: 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
end

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



169
170
171
172
173
174
175
176
177
178
179
180
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 169

def perform_put(path, response_adaptor: nil, body: nil, fake_response: nil, cache_adaptor: nil, timeout: nil, gateway: 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
end

#preloaded_gatewayObject Also known as: gateway

GATEWAY #



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

def preloaded_gateway
  loaded_gateway.presence || gateway_factory.call
end

#raise_no_gatewayObject



69
70
71
72
73
74
75
76
77
78
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 69

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



101
102
103
# File 'lib/artirix_data_models/daos/basic_model_dao.rb', line 101

def remove_force_fake
  @_forced_fake_enabled = nil
end