dmp-dynamo_adapter 0.1.6 → 0.1.9
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/lib/dmp/dynamo_adapter.rb +25 -16
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a38cf33054966d1ad251334ff69c9c120810f574c68366675a3b067c63976518
|
4
|
+
data.tar.gz: efd50976eedd2b51a7c2a3877fc949b0fb99ce4162ee8f513f8edcf0385a3bd2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a14dea8426ac97c743d420f3952a5d7e56cb6a95749e9f32390ca74791ac085ebdfe90381a0fd990cf3547bb3d5fcae5b78300533871a9d11892f3074ed005f8
|
7
|
+
data.tar.gz: f35b4a2a51461faf6023ec3a08f973c88f7bd379b13037e7df65cb703368bf39ca09d35ddb289e23d74c0b7dec95e1043cb3f9a85e57880d03e3a253d3a17f83
|
data/lib/dmp/dynamo_adapter.rb
CHANGED
@@ -49,8 +49,8 @@ module Dmp
|
|
49
49
|
}
|
50
50
|
)
|
51
51
|
{ status: 200, items: response.items.map(&:item).compact.uniq }
|
52
|
-
rescue Aws::Errors::ServiceError
|
53
|
-
{ status: 500, error: MSG_DEFAULT }
|
52
|
+
rescue Aws::Errors::ServiceError => e
|
53
|
+
{ status: 500, error: "#{MSG_DEFAULT} - #{e.message}" }
|
54
54
|
end
|
55
55
|
# rubocop:enable Metrics/MethodLength
|
56
56
|
|
@@ -58,6 +58,10 @@ module Dmp
|
|
58
58
|
def find_by_pk(p_key:, s_key: Dmp::MetadataHandler::LATEST_VERSION)
|
59
59
|
return { status: 404, error: MSG_NOT_FOUND } if p_key.nil?
|
60
60
|
|
61
|
+
s_key = Dmp::MetadataHandler::LATEST_VERSION if s_key.nil? || s_key.strip == ''
|
62
|
+
|
63
|
+
p "FINDING BY PK: PK - #{p_key.inspect} / SK - #{s_key.inspect}"
|
64
|
+
|
61
65
|
response = @client.get_item(
|
62
66
|
{
|
63
67
|
table_name: ENV['AWS_DYNAMO_TABLE_NAME'],
|
@@ -69,8 +73,8 @@ module Dmp
|
|
69
73
|
return { status: 404, error: MSG_NOT_FOUND } if response.items.empty?
|
70
74
|
|
71
75
|
{ status: 200, items: response.items.map(&:item).compact.uniq }
|
72
|
-
rescue Aws::Errors::ServiceError
|
73
|
-
{ status: 500, error: MSG_DEFAULT }
|
76
|
+
rescue Aws::Errors::ServiceError => e
|
77
|
+
{ status: 500, error: "#{MSG_DEFAULT} - #{e.message}" }
|
74
78
|
end
|
75
79
|
|
76
80
|
# Find a DMP based on the contents of the incoming JSON
|
@@ -81,7 +85,7 @@ module Dmp
|
|
81
85
|
|
82
86
|
pk = json['PK']
|
83
87
|
# Translate the incoming :dmp_id into a PK
|
84
|
-
pk =
|
88
|
+
pk = Dmp::DmpIdHandler.dmp_id_to_pk(json: json.fetch('dmp_id', {})) if pk.nil?
|
85
89
|
|
86
90
|
# find_by_PK
|
87
91
|
response = find_by_pk(p_key: pk, s_key: json['SK']) unless pk.nil?
|
@@ -99,6 +103,9 @@ module Dmp
|
|
99
103
|
json = prepare_json(json: json)
|
100
104
|
return { status: 400, error: MSG_DEFAULT } if json.nil? || @provenance.nil?
|
101
105
|
|
106
|
+
p "FINDING BY JSON"
|
107
|
+
pp json
|
108
|
+
|
102
109
|
# Try to find it first
|
103
110
|
result = find_by_json(json: json)
|
104
111
|
return { status: 500, error: MSG_DEFAULT } if result[:status] == 500
|
@@ -106,7 +113,7 @@ module Dmp
|
|
106
113
|
return { status: 400, error: MSG_EXISTS } if result[:items].any?
|
107
114
|
|
108
115
|
# allocate a DMP ID
|
109
|
-
p_key = preregister_dmp_id
|
116
|
+
p_key = Dmp::DmpIdHandler.preregister_dmp_id
|
110
117
|
return { status: 500, error: MSG_NO_DMP_ID } if p_key.nil?
|
111
118
|
|
112
119
|
# Add the DMPHub specific attributes and then save
|
@@ -121,8 +128,8 @@ module Dmp
|
|
121
128
|
{ status: 201, items: response.items.map(&:item).compact.uniq }
|
122
129
|
rescue Aws::DynamoDB::Errors::DuplicateItemException
|
123
130
|
{ status: 405, error: MSG_EXISTS }
|
124
|
-
rescue Aws::Errors::ServiceError
|
125
|
-
{ status: 500, error: MSG_DEFAULT }
|
131
|
+
rescue Aws::Errors::ServiceError => e
|
132
|
+
{ status: 500, error: "#{MSG_DEFAULT} - #{e.message}" }
|
126
133
|
end
|
127
134
|
# rubocop:enable Metrics/MethodLength, Metrics/CyclomaticComplexity
|
128
135
|
|
@@ -179,8 +186,8 @@ pp json
|
|
179
186
|
{ status: 200, items: response.items.map(&:item).compact.uniq }
|
180
187
|
rescue Aws::DynamoDB::Errors::DuplicateItemException
|
181
188
|
{ status: 405, error: MSG_EXISTS }
|
182
|
-
rescue Aws::Errors::ServiceError
|
183
|
-
{ status: 500, error: MSG_DEFAULT }
|
189
|
+
rescue Aws::Errors::ServiceError => e
|
190
|
+
{ status: 500, error: "#{MSG_DEFAULT} - #{e.message}" }
|
184
191
|
end
|
185
192
|
# rubocop:enable Metrics/AbcSize, Metrics/MethodLength, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
186
193
|
|
@@ -224,8 +231,8 @@ pp json
|
|
224
231
|
}
|
225
232
|
)
|
226
233
|
{ status: 200, items: response.items.map(&:item).compact.uniq }
|
227
|
-
rescue Aws::Errors::ServiceError
|
228
|
-
{ status: 500, error: MSG_DEFAULT }
|
234
|
+
rescue Aws::Errors::ServiceError => e
|
235
|
+
{ status: 500, error: "#{MSG_DEFAULT} - #{e.message}" }
|
229
236
|
end
|
230
237
|
# rubocop:enable Metrics/MethodLength, Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
|
231
238
|
|
@@ -240,6 +247,8 @@ pp json
|
|
240
247
|
def find_by_dmphub_provenance_identifier(json:)
|
241
248
|
return { status: 400, error: MSG_DEFAULT } if json.nil? || json.fetch('dmp_id', {})['identifier'].nil?
|
242
249
|
|
250
|
+
p "FINDING BY PROVENANCE ID: #{json['dmp_id']['identifier']}"
|
251
|
+
|
243
252
|
response = @client.query(
|
244
253
|
{
|
245
254
|
table_name: ENV['AWS_DYNAMO_TABLE_NAME'],
|
@@ -261,8 +270,8 @@ pp json
|
|
261
270
|
|
262
271
|
# If we got a hit, fetch the DMP and return it.
|
263
272
|
find_by_pk(p_key: response.items.first.item[:PK])
|
264
|
-
rescue Aws::Errors::ServiceError
|
265
|
-
{ status: 500, error: MSG_DEFAULT }
|
273
|
+
rescue Aws::Errors::ServiceError => e
|
274
|
+
{ status: 500, error: "#{MSG_DEFAULT} - #{e.message}" }
|
266
275
|
end
|
267
276
|
# rubocop:enable Metrics/MethodLength, Metrics/AbcSize
|
268
277
|
|
@@ -291,8 +300,8 @@ pp json
|
|
291
300
|
return { status: 404, error: MSG_NOT_FOUND } if response.nil? || response.items.empty?
|
292
301
|
|
293
302
|
{ status: 200, items: response.items.map(&:item).compact.uniq }
|
294
|
-
rescue Aws::Errors::ServiceError
|
295
|
-
{ status: 500, error: MSG_DEFAULT }
|
303
|
+
rescue Aws::Errors::ServiceError => e
|
304
|
+
{ status: 500, error: "#{MSG_DEFAULT} - #{e.message}" }
|
296
305
|
end
|
297
306
|
# rubocop:enable Metrics/MethodLength
|
298
307
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dmp-dynamo_adapter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- briri
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-08-
|
11
|
+
date: 2022-08-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk-dynamodb
|