artirix_data_models 0.12.0 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e693f7a79fd0435a53c7315a66a0a87fddc00756
4
- data.tar.gz: 1e2209be29d0228f38187d74079570b5d8326af6
3
+ metadata.gz: 5f5c9b67e6750f823690f34a19b2a147c496b682
4
+ data.tar.gz: 1c5e038ae44746f7c24ed28716bdd02ebe88160b
5
5
  SHA512:
6
- metadata.gz: c51a77d2635bdbf0a2c32fb1a89caa6c63dc31d5e6980d388092287f7f31a5682b60c5f7e55636bfc8eee40c69372b7e7afb12a257c8a855bfe2827003149486
7
- data.tar.gz: 29814e119cfe07b7b26390d7bf1132b0ed9f6b749d035303816b1c58b9b14aecf0a00226bdf06da2a40a249aa90af5598d346020327df1f1cde00e4c412d7f61
6
+ metadata.gz: c664f3ec187ed056d575d25ac933c901e78abdac5b7987500bfa44405959b37ff0cb36b01b998a6f899294f66830afc0e851b51e03e420c44025a68b59cd5258
7
+ data.tar.gz: 587cadda688164919abc0d7a27791c82549f6b878d59d876c349f067b16ec24305d24c41b8965a50cf1958b4ea3b66bf9d83476ff28a32f7e491332d434ab700
data/README.md CHANGED
@@ -268,6 +268,12 @@ end
268
268
 
269
269
  ## Changes
270
270
 
271
+ ### 0.13.0
272
+ - `DAO`: fake responses lazy loaded
273
+ - `DAO`: response adaptor methods of basic dao moved to a module, included in `BasicDAO` and as part of the module `DAO`. Also added `response_adaptor_for_identity`, which returns the same.
274
+ - `Model`: added `new_full_mode` method, that will build a new model and mark it as full mode
275
+
276
+
271
277
  ### 0.12.0
272
278
  - `attribute` call now can accept a hash of options as the last argument. This options include: `skip` (what to skip), `writer_visibility` and `reader_visibility`.
273
279
 
@@ -17,10 +17,15 @@ module ArtirixDataModels
17
17
  :forced_fake_disabled?,
18
18
  :empty_collection,
19
19
  :empty_collection_for,
20
- :model_adaptor_factory
20
+ :perform_get,
21
+ :perform_post,
22
+ :perform_put,
23
+ :perform_delete,
21
24
  ]
22
25
 
23
26
  included do
27
+ include ArtirixDataModels::DAOConcerns::WithResponseAdaptors
28
+
24
29
  attr_reader :basic_model_dao
25
30
  delegate *DELEGATED_METHODS, to: :basic_model_dao
26
31
  end
@@ -0,0 +1,41 @@
1
+ module ArtirixDataModels
2
+ module DAOConcerns
3
+ module WithResponseAdaptors
4
+
5
+ def model_adaptor_factory
6
+ ArtirixDataModels::GatewayResponseAdaptors::ModelAdaptor
7
+ end
8
+
9
+ def response_adaptor_for_reload(model_to_reload)
10
+ model_adaptor_factory.with_block do |data_hash|
11
+ model_to_reload.reload_with data_hash
12
+ end
13
+ end
14
+
15
+ def response_adaptor_for_identity
16
+ model_adaptor_factory.identity
17
+ end
18
+
19
+ def response_adaptor_for_single(effective_model_class = model_class)
20
+ model_adaptor_factory.single effective_model_class
21
+ end
22
+
23
+ def response_adaptor_for_some(effective_model_class = model_class)
24
+ model_adaptor_factory.some effective_model_class
25
+ end
26
+
27
+ def response_adaptor_for_collection(from, size, collection_element_model_class = model_class)
28
+ model_adaptor_factory.collection collection_element_model_class, from, size
29
+ end
30
+
31
+ def response_adaptor_for_block(&block)
32
+ model_adaptor_factory.with_block &block
33
+ end
34
+
35
+ def response_adaptor_for_callable(callable)
36
+ model_adaptor_factory.with_callable callable
37
+ end
38
+
39
+ end
40
+ end
41
+ end
@@ -1,4 +1,6 @@
1
1
  class ArtirixDataModels::BasicModelDAO
2
+ include ArtirixDataModels::DAOConcerns::WithResponseAdaptors
3
+
2
4
  attr_reader :model_name, :model_class, :paths_factory, :fake_mode_factory, :gateway_factory, :loaded_gateway
3
5
 
4
6
  def initialize(model_name:, model_class:, paths_factory:, gateway:, fake_mode_factory:, gateway_factory:)
@@ -10,25 +12,15 @@ class ArtirixDataModels::BasicModelDAO
10
12
  @fake_mode_factory = fake_mode_factory
11
13
  end
12
14
 
13
- def preloaded_gateway
14
- loaded_gateway.presence || gateway_factory.call
15
- end
16
-
17
- alias_method :gateway, :preloaded_gateway
18
-
19
- def partial_mode_fields
20
- if fake?
21
- fake_mode_factory.partial_mode_fields
22
- else
23
- ArtirixDataModels::DAORegistry.model_fields.partial_mode_fields_for model_name
24
- end
25
- end
15
+ ###########
16
+ # ACTIONS #
17
+ ###########
26
18
 
27
19
  def get_full(model_pk, model_to_reload:, response_adaptor: nil, cache_adaptor: nil, **extra_options)
28
20
  path = paths_factory.get_full model_pk
29
21
  response_adaptor ||= response_adaptor_for_reload(model_to_reload)
30
22
 
31
- _get path, response_adaptor: response_adaptor, fake_response: fake_get_full_response(model_pk, model_to_reload), cache_adaptor: cache_adaptor, **extra_options
23
+ perform_get path, response_adaptor: response_adaptor, fake_response: fake_get_full_response(model_pk, model_to_reload), cache_adaptor: cache_adaptor, **extra_options
32
24
 
33
25
  model_to_reload.mark_full_mode
34
26
  model_to_reload
@@ -44,18 +36,60 @@ class ArtirixDataModels::BasicModelDAO
44
36
  path = paths_factory.get model_pk
45
37
  response_adaptor ||= response_adaptor_for_single
46
38
 
47
- _get(path, response_adaptor: response_adaptor, fake_response: fake_get_response(model_pk), cache_adaptor: cache_adaptor, **extra_options)
39
+ perform_get(path, response_adaptor: response_adaptor, fake_response: fake_get_response(model_pk), cache_adaptor: cache_adaptor, **extra_options)
48
40
  end
49
41
 
50
42
  def get_some(model_pks, cache_adaptor: nil, response_adaptor: nil, **extra_options)
51
43
  path = paths_factory.get_some(model_pks)
52
44
  response_adaptor ||= response_adaptor_for_some
53
45
 
54
- _get(path, response_adaptor: response_adaptor, fake_response: fake_get_some_response(model_pks), cache_adaptor: cache_adaptor, **extra_options)
46
+ perform_get(path, response_adaptor: response_adaptor, fake_response: fake_get_some_response(model_pks), cache_adaptor: cache_adaptor, **extra_options)
55
47
  rescue ArtirixDataModels::DataGateway::NotFound
56
48
  []
57
49
  end
58
50
 
51
+ ###########
52
+ # GATEWAY #
53
+ ###########
54
+
55
+ def preloaded_gateway
56
+ loaded_gateway.presence || gateway_factory.call
57
+ end
58
+
59
+ alias_method :gateway, :preloaded_gateway
60
+
61
+ def partial_mode_fields
62
+ if fake?
63
+ fake_mode_factory.partial_mode_fields
64
+ else
65
+ ArtirixDataModels::DAORegistry.model_fields.partial_mode_fields_for model_name
66
+ end
67
+ end
68
+
69
+ def raise_no_gateway
70
+ msg = 'no gateway passed to request, no gateway configured on creation'
71
+ if gateway_factory.present?
72
+ msg = "#{msg}, and no gateway returned by the factory"
73
+ else
74
+ msg = "#{msg}, and no gateway factory configured on creation"
75
+ end
76
+
77
+ raise NoGatewayConfiguredError, msg
78
+ end
79
+
80
+ class NoGatewayConfiguredError < StandardError
81
+ end
82
+
83
+ #############
84
+ # FAKE MODE #
85
+ #############
86
+
87
+ def fake?
88
+ return true if forced_fake_enabled?
89
+ return false if forced_fake_disabled?
90
+ fake_mode_factory.enabled?
91
+ end
92
+
59
93
  def force_fake_enabled
60
94
  @_forced_fake_enabled = true
61
95
  end
@@ -80,35 +114,17 @@ class ArtirixDataModels::BasicModelDAO
80
114
 
81
115
  def fake_get_response(model_pk)
82
116
  return nil unless fake?
83
- fake_mode_factory.get model_pk
117
+ -> { fake_mode_factory.get model_pk }
84
118
  end
85
119
 
86
120
  def fake_get_some_response(model_pks)
87
121
  return nil unless fake?
88
- fake_mode_factory.get_some model_pks
122
+ -> { fake_mode_factory.get_some model_pks }
89
123
  end
90
124
 
91
125
  def fake_get_full_response(model_pk, model_to_reload = nil)
92
126
  return nil unless fake?
93
- fake_mode_factory.get_full model_pk, model_to_reload
94
- end
95
-
96
- def response_adaptor_for_reload(model_to_reload)
97
- model_adaptor_factory.with_block do |data_hash|
98
- model_to_reload.reload_with data_hash
99
- end
100
- end
101
-
102
- def response_adaptor_for_single
103
- model_adaptor_factory.single model_class
104
- end
105
-
106
- def response_adaptor_for_some(element_model_class = model_class)
107
- model_adaptor_factory.some element_model_class
108
- end
109
-
110
- def response_adaptor_for_collection(from, size, collection_element_model_class = model_class)
111
- model_adaptor_factory.collection collection_element_model_class, from, size
127
+ -> { fake_mode_factory.get_full model_pk, model_to_reload }
112
128
  end
113
129
 
114
130
  def empty_collection(from, size)
@@ -119,52 +135,39 @@ class ArtirixDataModels::BasicModelDAO
119
135
  ArtirixDataModels::EsCollection.empty model_class, from: from, size: size
120
136
  end
121
137
 
122
- def model_adaptor_factory
123
- ArtirixDataModels::GatewayResponseAdaptors::ModelAdaptor
124
- end
138
+ #################
139
+ # PERFORM CALLS #
140
+ #################
125
141
 
126
- def _get(path, response_adaptor: nil, body: nil, fake_response: nil, cache_adaptor: nil, gateway: nil)
142
+ def perform_get(path, response_adaptor: nil, body: nil, fake_response: nil, cache_adaptor: nil, gateway: nil)
127
143
  g = gateway.presence || preloaded_gateway
128
144
  raise_no_gateway unless g.present?
129
145
  g.get path, response_adaptor: response_adaptor, body: body, fake: fake?, fake_response: fake_response, cache_adaptor: cache_adaptor
130
146
  end
131
147
 
132
- def _post(path, response_adaptor: nil, body: nil, fake_response: nil, cache_adaptor: nil, gateway: nil)
148
+
149
+ def perform_post(path, response_adaptor: nil, body: nil, fake_response: nil, cache_adaptor: nil, gateway: nil)
133
150
  g = gateway.presence || preloaded_gateway
134
151
  raise_no_gateway unless g.present?
135
152
  g.post path, response_adaptor: response_adaptor, body: body, fake: fake?, fake_response: fake_response, cache_adaptor: cache_adaptor
136
153
  end
137
154
 
138
- def _put(path, response_adaptor: nil, body: nil, fake_response: nil, cache_adaptor: nil, gateway: nil)
155
+ def perform_put(path, response_adaptor: nil, body: nil, fake_response: nil, cache_adaptor: nil, gateway: nil)
139
156
  g = gateway.presence || preloaded_gateway
140
157
  raise_no_gateway unless g.present?
141
158
  g.put path, response_adaptor: response_adaptor, body: body, fake: fake?, fake_response: fake_response, cache_adaptor: cache_adaptor
142
159
  end
143
160
 
144
- def _delete(path, response_adaptor: nil, body: nil, fake_response: nil, cache_adaptor: nil, gateway: nil)
161
+ def perform_delete(path, response_adaptor: nil, body: nil, fake_response: nil, cache_adaptor: nil, gateway: nil)
145
162
  g = gateway.presence || preloaded_gateway
146
163
  raise_no_gateway unless g.present?
147
164
  g.delete path, response_adaptor: response_adaptor, body: body, fake: fake?, fake_response: fake_response, cache_adaptor: cache_adaptor
148
165
  end
149
166
 
150
- def fake?
151
- return true if forced_fake_enabled?
152
- return false if forced_fake_disabled?
153
- fake_mode_factory.enabled?
154
- end
155
-
156
- def raise_no_gateway
157
- msg = 'no gateway passed to request, no gateway configured on creation'
158
- if gateway_factory.present?
159
- msg = "#{msg}, and no gateway returned by the factory"
160
- else
161
- msg = "#{msg}, and no gateway factory configured on creation"
162
- end
163
-
164
- raise NoGatewayConfiguredError, msg
165
- end
166
-
167
- class NoGatewayConfiguredError < StandardError
168
- end
167
+ # old names
168
+ alias_method :_get, :perform_get
169
+ alias_method :_post, :perform_post
170
+ alias_method :_put, :perform_put
171
+ alias_method :_delete, :perform_delete
169
172
 
170
173
  end
@@ -40,6 +40,10 @@ module ArtirixDataModels::GatewayResponseAdaptors
40
40
 
41
41
  private_class_method :new
42
42
 
43
+ def self.identity
44
+ new ->(data_hash) { data_hash }
45
+ end
46
+
43
47
  def self.single(model_class)
44
48
  new ->(data_hash) { model_class.new data_hash }
45
49
  end
@@ -421,6 +421,10 @@ module ArtirixDataModels
421
421
  end
422
422
 
423
423
  module ClassMethods
424
+ def new_full_mode(*args, &block)
425
+ new(*args, &block).tap { |x| x.mark_full_mode }
426
+ end
427
+
424
428
  def always_in_partial_mode(attribute)
425
429
  attribute_config.always_in_partial_mode(attribute)
426
430
  end
@@ -1,3 +1,3 @@
1
1
  module ArtirixDataModels
2
- VERSION = '0.12.0'
2
+ VERSION = '0.13.0'
3
3
  end
@@ -28,6 +28,7 @@ require 'artirix_data_models/cached_action_adaptor'
28
28
  require 'artirix_data_models/cached_action_adaptor/get'
29
29
  require 'artirix_data_models/cached_action_adaptor/get_full'
30
30
  require 'artirix_data_models/cached_action_adaptor/get_some'
31
+ require 'artirix_data_models/dao_concerns/with_response_adaptors'
31
32
  require 'artirix_data_models/dao'
32
33
  require 'artirix_data_models/daos/model_fields_dao'
33
34
  require 'artirix_data_models/daos/basic_model_dao'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: artirix_data_models
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.0
4
+ version: 0.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eduardo Turiño
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-24 00:00:00.000000000 Z
11
+ date: 2016-02-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -250,6 +250,7 @@ files:
250
250
  - lib/artirix_data_models/cached_action_adaptor/get_full.rb
251
251
  - lib/artirix_data_models/cached_action_adaptor/get_some.rb
252
252
  - lib/artirix_data_models/dao.rb
253
+ - lib/artirix_data_models/dao_concerns/with_response_adaptors.rb
253
254
  - lib/artirix_data_models/dao_registry.rb
254
255
  - lib/artirix_data_models/daos/basic_model_dao.rb
255
256
  - lib/artirix_data_models/daos/model_fields_dao.rb