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 +4 -4
- data/README.md +6 -0
- data/lib/artirix_data_models/dao.rb +6 -1
- data/lib/artirix_data_models/dao_concerns/with_response_adaptors.rb +41 -0
- data/lib/artirix_data_models/daos/basic_model_dao.rb +66 -63
- data/lib/artirix_data_models/gateway_response_adaptors/model_adaptor.rb +4 -0
- data/lib/artirix_data_models/model.rb +4 -0
- data/lib/artirix_data_models/version.rb +1 -1
- data/lib/artirix_data_models.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5f5c9b67e6750f823690f34a19b2a147c496b682
|
4
|
+
data.tar.gz: 1c5e038ae44746f7c24ed28716bdd02ebe88160b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
:
|
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
|
-
|
14
|
-
|
15
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
123
|
-
|
124
|
-
|
138
|
+
#################
|
139
|
+
# PERFORM CALLS #
|
140
|
+
#################
|
125
141
|
|
126
|
-
def
|
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
|
-
|
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
|
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
|
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
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
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
|
@@ -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
|
data/lib/artirix_data_models.rb
CHANGED
@@ -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.
|
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-
|
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
|